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<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())); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |