2017-06-21 1599 views
0

如何初始化一个arrayList为固定大小并将其分配给nil?
我在Swift/IoS中有如下代码。
Java中以下代码在Java中的等效性如何?如何初始化一个arrayList为固定大小并将其分配给零

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,I应该能够分配对象到arrList [2]即使arrList [0]和arrList [1]仍为零

+0

在英语中,你想在这里做什么,更重要的是 - 为什么? –

+0

你是什么意思“分配给零”?你想用一定数量的'null'填充数组? – Carcigenicate

+1

我想你的意思是你想要一个固定大小的数组而不是ArrayList – 2017-06-21 01:22:07

回答

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) 
+0

最后一条命令显示错误。 (e - > e!= null) – dacscan3669

+0

@ dacscan3669我假设您正在为Android编程。 Streams是在Java 8中添加的,因此它们不适用于所有Android版本 –

+1

@ dacscan3669相反,如果(student!= null),则必须使用循环'for(Student s:studentList)tempList.add(student )' –

1

给你的评论说,你很可能在寻找:

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

Whenev呃你创建一个Object类的数组,它全部为null。

Student[] students = new Student[5]; 

而且您可以指定一个索引,其余为空。

students[2] = new Student(); 

数组是固定大小,不能添加到。

如果你想流出来的数组,你可以做到这一点,以及

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

最后一个命令显示错误。对于Objects :: nonNull – dacscan3669

+0

无法解析在流上悬停的方法'流'以及'此语言级别不支持方法引用'。最后一条命令在Android上不起作用,因此不得不采用其他解决方案。前两个命令很好。 – dacscan3669

+0

正在添加Java 8功能。 https://developer.android.com/guide/platform/j8-jack.html您的问题未使用android标记。 –

0

试试这个。

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

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

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); } 
相关问题