Lea*_*oop 3 java list java-8 java-stream
我早些时候使用:
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
Run Code Online (Sandbox Code Playgroud)
在Java 8中,我尝试过map(Person::new).它导致了这个问题.
person.stream().limit(1).map(Person::new).
Run Code Online (Sandbox Code Playgroud)
我该如何实施?
Nik*_*las 10
您可以执行以下操作:
person.stream() // stream
.findFirst() // finds the first
.ifPresent(i -> System.out.println(i.getFirstName())); // if present, print the name
Run Code Online (Sandbox Code Playgroud)
如果您想使用Person以防万一List<Person>,请使用Optional:
Optional<Person> p = person.stream().findFirst();
p.ifPresent(i -> System.out.println(i.getFirstName()));
Run Code Online (Sandbox Code Playgroud)
此解决方案假定列表中包含元素(是空的).但是如果null发生在List<Person>,则必须首先过滤null掉值:
Optional<Person> p = person.stream().filter(Objects::nonNull).findFirst();
p.ifPresent(i -> System.out.println(i.getFirstName()));
Run Code Online (Sandbox Code Playgroud)
最后,如果您希望Person使用特定索引,请使用skip和limit.不要忘记过滤List<Person> after 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()));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
134 次 |
| 最近记录: |