android接收list对象数组,关于android:在Array列表或List中过滤自定义对象

本问题已经有最佳答案,请猛点这里访问。

我在数组列表中有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 = 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中过滤学生年龄。我从上个月开始学安卓。除了在Internet上循环数组列表,我没有得到任何答案来实现这一点。

除了循环数组列表之外,任何最快的方法…显然,对于自定义谓词,如果不迭代所有元素,就无法进行筛选。

可以使用反LAMBDA库获得Java 8流类似的功能:

List filteredList = StreamSupport

.stream(yourInputStudentList)

.filter(item -> item.getAge() =="20")

.collect(Collectors.toList());

为此,您需要添加更新Gradle文件,如下所示:

buildscript {

repositories {

jcenter()

}

dependencies {

classpath 'com.android.tools.build:gradle:1.4.0'

classpath 'me.tatarka:gradle-retrolambda:3.2.0' // Add this

}

}

顺便问一下:年龄不应该是一个字符串,而是一个整数?不过,这是离题的。

它说"不能解决方法"流(java. U.L.List.UngEnter)。

参见stackoverflow.com/questions/45704901/…

使用轻量级流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 filteredList = Stream.of(yourInputStudentList).filter(new Predicate() {

@Override

public boolean test(Student item) {

return item.getAge().equals("20");

}

}).collect(Collectors.toList());

Lamda:

import com.annimon.stream.Stream;

import com.annimon.stream.function.Predicate;

..............

List filteredList = Stream.of(yourInputStudentList).filter(item-> item.getAge().equals("20")).collect(Collectors.toList());

嗨,兄弟。我得到这个错误"java. Lang.CassCasExtExc:Java.UTI.Studio。收藏家$CopeCurrIMPL不能被强制转换为COM.ANNIMON.Stur.C收藏品"。当我使用你的第一个选项。

请导入com.annimon.sream.collector

删除import java.util.stream.collectors,然后添加import com.annimon.stream.collector。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值