为什么我收到此代码的此错误?我对 ArrayList 和 Collections 有正确的导入
private ArrayList<String> tips;
public TipsTask(ArrayList<String> tips){
this.tips = Collections.shuffle(tips);
}
Collections.shuffle(tips);
Collections.shuffle 返回 void,您不能将 void 分配给ArrayList
.
例如,您可以这样做:
Collections.shuffle(tips);
this.tips = tips;
问题是该Collections.shuffle
方法不返回任何内容。
你可以试试这个:
private ArrayList<String> tips;
public TipsTask(ArrayList<String> tips){
this.tips = new ArrayList<String>(tips);
Collections.shuffle(this.tips);
}
Collections.shuffle
就地打乱数组。这就足够了:
private ArrayList<String> tips;
public TipsTask(ArrayList<String> tips){
this.tips = tips;
Collections.shuffle(tips);
}
或者,如果您不想更改原始列表:
private ArrayList<String> tips;
public TipsTask(ArrayList<String> tips){
this.tips = new ArrayList<String>(tips);
Collections.shuffle(this.tips);
}
Collections.shuffle(tips)
返回无效。所以你不能把它分配给ArrayList()
你想要的是
private ArrayList<String> tips;
public TipsTask(ArrayList<String> _tips){
Collections.shuffle(_tips);
this.tips = _tips;
}
你应该这样称呼它:
private ArrayList<String> tips;
public TipsTask(ArrayList<String> tips){
this.tips = tips;
Collections.shuffle(tips);
}
Collections.shuffle(tips) 直接修改 ArrayList。它不需要创建副本。
我认为你应该这样写:
private List<String> tips;
public TipsTask(List<String> tips) {
this.tips = new ArrayList<String>(tips);
Collections.shuffle(this.tips);
}
另一种方式破坏了将列表设为私有。具有原始参考的人可以操纵您的私人状态。