类型不匹配:无法从void转换为ArrayList

为什么我收到此代码的错误? 我有正确的ArrayList和Collections导入

private ArrayList tips; public TipsTask(ArrayList tips){ this.tips = Collections.shuffle(tips); } 

 Collections.shuffle(tips); 

Collections.shuffle返回void,不能将void赋给ArrayList

你可以这样做:

   Collections.shuffle(tips); this.tips = tips; 

问题是Collections.shuffle方法不返回任何内容。

你可以试试这个:

 private ArrayList tips; public TipsTask(ArrayList tips){ this.tips = new ArrayList(tips); Collections.shuffle(this.tips); } 

Collections.shuffle就地对arrays进行洗牌。 这就足够了:

 private ArrayList tips; public TipsTask(ArrayList tips){ this.tips = tips; Collections.shuffle(tips); } 

或者,如果您不希望更改原始列表:

 private ArrayList tips; public TipsTask(ArrayList tips){ this.tips = new ArrayList(tips); Collections.shuffle(this.tips); } 

Collections.shuffle(tips)返回void。 所以你不能将它赋给ArrayList()

你想要的是什么

 private ArrayList tips; public TipsTask(ArrayList _tips){ Collections.shuffle(_tips); this.tips = _tips; } 

你应该这样称呼它:

 private ArrayList tips; public TipsTask(ArrayList tips){ this.tips = tips; Collections.shuffle(tips); } 

Collections.shuffle(tips)直接修改ArrayList。 它不需要创建副本。

我想你应该这样写:

 private List tips; public TipsTask(List tips) { this.tips = new ArrayList(tips); Collections.shuffle(this.tips); } 

另一种方法是将列表设为私有。 具有原始参考的人可以操纵您的私人状态。