类型不匹配:无法从void转换为ArrayList <string> </string>

时间:2013-07-14 22:31:58

标签: java arraylist

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

private ArrayList<String> tips;

public TipsTask(ArrayList<String> tips){
    this.tips = Collections.shuffle(tips);
}

6 个答案:

答案 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);
}

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