Android 在数组列表或列表中筛选自定义对象
我在数组列表中有50个自定义类(类名:Student)对象Android 在数组列表或列表中筛选自定义对象,android,list,arraylist,filter,Android,List,Arraylist,Filter,我在数组列表中有50个自定义类(类名:Student)对象 public class Student { private String name; private String age; private String parent; public String getName() { return name; } public void setName(String name) { this.name = n
public class Student {
private String name;
private String age;
private String parent;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getParent() {
return parent;
}
public void setParent(String parent) {
this.parent = parent;
}
}
我想过滤年龄为20岁的学生数组列表,并将其存储到另一个数组列表中
注:
我试过使用for循环。工作正常。但我想知道,除了循环数组列表来过滤学生年龄,还有什么最快的方法吗
我在iOS方面有一些经验。在iOS中,NSPredicate用于从NSArray中筛选学生年龄。我从上个月开始学习android。除了通过internet循环数组列表来实现相同的功能之外,我没有得到任何答案。您可以使用库来获得类似的功能:
List<Student> filteredList = StreamSupport
.stream(yourInputStudentList)
.filter(item -> item.getAge() == "20")
.collect(Collectors.toList());
您可以使用库获取类似的函数:
List<Student> filteredList = StreamSupport
.stream(yourInputStudentList)
.filter(item -> item.getAge() == "20")
.collect(Collectors.toList());
您可以使用轻量级流API:
dependencies {
classpath 'com.android.tools.build:gradle:1.4.0'
compile 'com.annimon:stream:1.1.2'
}
然后使用:
import com.annimon.stream.Stream;
import com.annimon.stream.function.Predicate;
import com.annimon.stream.Collector;
..............
List<Student> filteredList = Stream.of(yourInputStudentList).filter(new Predicate<String>() {
@Override
public boolean test(Student item) {
return item.getAge().equals("20");
}
}).collect(Collectors.toList());
import com.annimon.stream.stream;
导入com.annimon.stream.function.Predicate;
导入com.annimon.stream.Collector;
..............
List-filteredList=Stream.of(yourInputStudentList).filter(新谓词(){
@凌驾
公共布尔测试(学生项目){
return item.getAge()等于(“20”);
}
}).collect(Collectors.toList());
拉姆达:
import com.annimon.stream.Stream;
import com.annimon.stream.function.Predicate;
..............
List<Student> filteredList = Stream.of(yourInputStudentList).filter(item-> item.getAge().equals("20")).collect(Collectors.toList());
import com.annimon.stream.stream;
导入com.annimon.stream.function.Predicate;
..............
List filteredList=Stream.of(yourInputStudentList).filter(item->item.getAge().equals(“20”).collect(Collectors.toList());
您使用轻量级流API:
dependencies {
classpath 'com.android.tools.build:gradle:1.4.0'
compile 'com.annimon:stream:1.1.2'
}
然后使用:
import com.annimon.stream.Stream;
import com.annimon.stream.function.Predicate;
import com.annimon.stream.Collector;
..............
List<Student> filteredList = Stream.of(yourInputStudentList).filter(new Predicate<String>() {
@Override
public boolean test(Student item) {
return item.getAge().equals("20");
}
}).collect(Collectors.toList());
import com.annimon.stream.stream;
导入com.annimon.stream.function.Predicate;
导入com.annimon.stream.Collector;
..............
List-filteredList=Stream.of(yourInputStudentList).filter(新谓词(){
@凌驾
公共布尔测试(学生项目){
return item.getAge()等于(“20”);
}
}).collect(Collectors.toList());
拉姆达:
import com.annimon.stream.Stream;
import com.annimon.stream.function.Predicate;
..............
List<Student> filteredList = Stream.of(yourInputStudentList).filter(item-> item.getAge().equals("20")).collect(Collectors.toList());
import com.annimon.stream.stream;
导入com.annimon.stream.function.Predicate;
..............
List filteredList=Stream.of(yourInputStudentList).filter(item->item.getAge().equals(“20”).collect(Collectors.toList());
除循环数组列表外的任何最快方式。。。显然,对于自定义谓词,除了循环数组列表之外,没有任何其他最快的方法可以不迭代所有元素而进行过滤。。。显然,对于自定义谓词,如果不迭代所有元素,就无法进行过滤:age不应该是字符串,而应该是int?尽管是离题。它说“无法解析方法‘流(java.util.List)”。请注意:年龄不应该是字符串,而应该是int?尽管是离题。它说“无法解析方法‘流(java.util.List)”。请参见Hi brother。我收到以下错误:“java.lang.ClassCastException:java.util.stream.Collectors$CollectorImpl无法强制转换为com.annimon.stream.Collector”。当我使用第一个选项时。导入com.annimon.sream.Collector请删除导入java.util.stream.Collector,然后添加导入com.annimon.stream.Collector.Hi brother。我收到以下错误:“java.lang.ClassCastException:java.util.stream.Collectors$CollectorImpl无法强制转换为com.annimon.stream.Collector”。当我使用第一个选项时。导入com.annimon.sream.Collector请删除导入java.util.stream.Collector,然后添加导入com.annimon.stream.Collector。