如何初始化一个固定大小的arrayList并将其分配给nil

时间:2017-06-21 01:20:17

标签: java arraylist

如何初始化一个固定大小的arrayList并将其分配给nil?
我在Swift / IoS中有如下代码 Java中Java代码的等价物是什么?

var studentsList:[Result?] = [Result?](repeating: nil, count: 5) //assign to nil
studentsList[2] = newStudent //assign at different level Eg:2
studentsList = studentsList.filter { $0 != nil } //filter all the nil objects

我需要一个固定长度的数组 我能够按顺序添加元素,但我需要能够在任何初始化级别添加元素 例如,如果我将数组的大小固定为5,我应该能够将对象分配给arrList [2],即使arrList [0]和arrList [1]仍然是nil

5 个答案:

答案 0 :(得分:1)

ArrayList<Student> studentList = new ArrayList<Student>(Collections.nCopies(5, null));
studentList.set(2, newStudent)
//studentList = studentList.stream().filter(e -> e != null)

由于您似乎正在使用Android,并且流无法使用,请使用以下命令:

ArrayList<Student> tempList = new ArrayList<>();
for(Student s : studentList) 
    if(student !=null) 
       studentList.add(student)

答案 1 :(得分:1)

在评论中给出你所说的内容,你可能正在寻找:

StudentList[] studentarray = new StudentList[5];
studentarray[2]= studentObj;

答案 2 :(得分:1)

每当你创建一个Object类的数组时,它都是null。

Student[] students = new Student[5];

您可以分配一个索引,将其余部分保留为空。

students[2] = new Student();

数组是固定大小,无法添加。

如果你想要一个数组流,你也可以这样做

Arrays.stream(students).filter( Objects::nonNull )

答案 3 :(得分:0)

试试这个。

List<Student> students = Arrays.asList(new Student[fixedSize]);

这是一个List,而不是一个ArrayList。但是你可以修改每个元素。如果向students添加元素,则会抛出异常。

答案 4 :(得分:0)

我根据发布的建议使用以下代码解决了这个问题。

Student[] studentList = new SchoolItem[5];

ArrayList<Student> sortedList = new ArrayList<>();

compareList[2] = new Student();

for( Student s : compareList) {
       if(s !=null)
       sortedList.add(s); }