为什么我收到此代码的错误?我有正确的ArrayList和Collections导入
private ArrayList<String> tips;
public TipsTask(ArrayList<String> tips){
this.tips = Collections.shuffle(tips);
}
答案 0 :(得分:8)
Collections.shuffle(tips);
Collections.shuffle返回void,您无法将void分配给ArrayList
。
你可以这样做:
Collections.shuffle(tips);
this.tips = tips;
答案 1 :(得分:3)
问题是Collections.shuffle
方法没有返回任何内容。
你可以试试这个:
private ArrayList<String> tips;
public TipsTask(ArrayList<String> tips){
this.tips = new ArrayList<String>(tips);
Collections.shuffle(this.tips);
}
答案 2 :(得分:2)
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);
}
答案 3 :(得分:0)
Collections.shuffle(tips)
返回void。因此,您无法将其分配给ArrayList()
你想要的是
private ArrayList<String> tips;
public TipsTask(ArrayList<String> _tips){
Collections.shuffle(_tips);
this.tips = _tips;
}
答案 4 :(得分:0)
您应该这样称呼它:
private ArrayList<String> tips;
public TipsTask(ArrayList<String> tips){
this.tips = tips;
Collections.shuffle(tips);
}
Collections.shuffle(tips)直接修改ArrayList。它不需要创建副本。
答案 5 :(得分:0)
我认为你应该这样写:
private List<String> tips;
public TipsTask(List<String> tips) {
this.tips = new ArrayList<String>(tips);
Collections.shuffle(this.tips);
}
另一种方法是将列表设为私有。具有原始参考的人可以操纵您的私人状态。