Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 类型不匹配:无法从void转换为ArrayList<;字符串>;_Java_Arraylist - Fatal编程技术网

Java 类型不匹配:无法从void转换为ArrayList<;字符串>;

Java 类型不匹配:无法从void转换为ArrayList<;字符串>;,java,arraylist,Java,Arraylist,为什么我得到这个代码的错误?我有ArrayList和Collections的正确导入 private ArrayList<String> tips; public TipsTask(ArrayList<String> tips){ this.tips = Collections.shuffle(tips); } 私有数组列表提示; 公共情报任务(ArrayList提示){ this.tips=Collections.shuffle(tips); } Coll

为什么我得到这个代码的错误?我有ArrayList和Collections的正确导入

private ArrayList<String> tips;

public TipsTask(ArrayList<String> tips){
    this.tips = Collections.shuffle(tips);
}
私有数组列表提示;
公共情报任务(ArrayList提示){
this.tips=Collections.shuffle(tips);
}
Collections.shuffle return 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);
}
私有数组列表提示;
公共情报任务(ArrayList提示){
this.tips=新阵列列表(tips);
Collections.shuffle(this.tips);
}

集合。洗牌
将数组洗牌到位。这就足够了:

private ArrayList<String> tips;

public TipsTask(ArrayList<String> tips){
    this.tips = tips;
    Collections.shuffle(tips);
}
私有数组列表提示;
公共情报任务(ArrayList提示){
this.tips=tips;
收藏。洗牌(提示);
}
或者,如果您不想更改原始列表:

private ArrayList<String> tips;

public TipsTask(ArrayList<String> tips){
    this.tips = new ArrayList<String>(tips);
    Collections.shuffle(this.tips);
}
私有数组列表提示;
公共情报任务(ArrayList提示){
this.tips=新阵列列表(tips);
Collections.shuffle(this.tips);
}
集合。洗牌(提示)
返回无效。因此,您不能将其分配给
ArrayList()

你想要的是

private ArrayList<String> tips;

public TipsTask(ArrayList<String> _tips){
    Collections.shuffle(_tips);
    this.tips = _tips;
}
私有数组列表提示;
公共情报任务(ArrayList _tips){
收藏。洗牌(_技巧);
this.tips=\u tips;
}

您应该这样称呼它:

private ArrayList<String> tips;

public TipsTask(ArrayList<String> tips){
    this.tips = tips;
    Collections.shuffle(tips);
}
私有数组列表提示;
公共情报任务(ArrayList提示){
this.tips=tips;
收藏。洗牌(提示);
}

洗牌(提示)直接修改ArrayList。它不需要创建副本。

我认为您应该这样写:

private List<String> tips;

public TipsTask(List<String> tips) {
    this.tips = new ArrayList<String>(tips);
    Collections.shuffle(this.tips);
}
私人列表提示;
公共提示任务(列出提示){
this.tips=新阵列列表(tips);
Collections.shuffle(this.tips);
}
另一种方法是将列表私有化。拥有原始引用的人可以操纵您的私有状态。

提示:Collections.shuffle的方法签名是什么?特别是,注意错误消息(上面说“不可能将void/nothing赋值给ArrayList变量”),shuffle返回什么?政府应该充分回答这个问题。如果出现类型错误,请始终首先检查相关的定义/类型-没有问题,只有不正确的用法。
private List<String> tips;

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