如何在类(Java)中设置列表<class>

时间:2016-11-14 20:24:32

标签: java class arraylist

我有Pipe类:

    public class Pipe {
        private int length;

        public Pipe(int length) {
            this.length = length;
        }
        // plus getter and setter
    }

然后是PipeGenerator类:

public class PipeGenerator  {
    private List<Pipe> pipeList;

    public PipeGenerator(int numberOfPipes) {
        List<Integer> availableTypes = generateAvailableTypes();
        List<Pipe> pipes = createRandomPipesList(numberOfPipes, availableTypes);

        this.pipeList.set(pipes);
        // plus getter and setter
    }
}

我的代码在Intellij中用红色高亮显示,我不明白为什么。这是一张图片:

enter image description here

createRandomPipesList方法:

private List<Pipe> createRandomPipesList(int numberOfPipes, List<Integer> availableTypes) {
    List<Pipe> pipes = new ArrayList<Pipe>();
    addPipesToList(numberOfPipes, availableTypes, pipes);
    return pipes;
}  

所以基本上我想生成一个List并将它设置为PipeGenerator类中的pipeList私有属性。会怎样做?

3 个答案:

答案 0 :(得分:3)

List类的set方法没有按照您的想法进行。请参阅API http://docs.oracle.com/javase/8/docs/api/java/util/List.html#set-int-E-

而只是分配新列表。

pipeList = pipes;

答案 1 :(得分:1)

现在,您正在将Pipes类型数组的管道添加到Pipes类型的数组中。因此,您要将数组添加到Pipes类型的数组中。将此与将一个整数添加到float类型的数组相比,它不起作用。

我认为你想将pipes.get(index)添加到pipelist。

for(int i = 0; i < numberOfPipes.size(); i++){
    this.pipeList.set(i,pipes.get(i));
}

答案 2 :(得分:0)

找出List#set方法。它需要2个参数。第一个整数1需要在哪个索引处设置作为第二个参数传递的Object。