加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java 8 – 限制第一个对象的流并转换为特定对象?

发布时间:2020-12-15 05:14:50 所属栏目:Java 来源:网络整理
导读:我早些时候使用: ListPerson person = UserDB.getUserDetails();Person p = person.get(0); // index of first position System.out.println(p.getFirstName()); // sometime i am getting // NULL pointer issue if person object is null 在Java 8中,我尝
我早些时候使用:

List<Person> person = UserDB.getUserDetails();
Person p = person.get(0); // index of first position 
System.out.println(p.getFirstName()); // sometime i am getting 
                                      // NULL pointer issue if person object is null

在Java 8中,我尝试使用map(Person :: new).它导致了这个问题.

person.stream().limit(1).map(Person::new).

我该如何实施?

解决方法

您可以执行以下操作:

person.stream()                                              // stream
      .findFirst()                                           // finds the first
      .ifPresent(i -> System.out.println(i.getFirstName())); // if present,print the name

如果你希望在List< Person>的情况下使用Person.是空的,使用Optional

Optional<Person> p = person.stream().findFirst();
p.ifPresent(i -> System.out.println(i.getFirstName()));

此解决方案假定列表中包含元素(是空的).但是,如果List< Person>中出现null,则必须首先过滤掉空值:

Optional<Person> p = person.stream().filter(Objects::nonNull).findFirst();
p.ifPresent(i -> System.out.println(i.getFirstName()));

最后,如果您希望在特定索引上使用Person,请使用skip和limit.不要忘记过滤List< Person>在skip-limit`之后,否则索引将不匹配:

// person.get(3)
Optional<Person> p = person.stream().skip(3).limit(1).filter(Objects::nonNull).findFirst();
p.ifPresent(i -> System.out.println(i.getName()));

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读