如何初始化一个固定大小的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
答案 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); }