目前,我们的开发大多数jdk至少使用1.8版本。 这个版本开始添加了很多特性,但今天也只是记录了其中的一小部分,是个小疑问。
在开发过程中,经常遇到需要从一个List中取出一个属性的List的集合,例如id的集合
所以用JDK8的方法,
我有个疑问,我们取值时会碰到空指针吗?
答案是“不”
但是还有另一个问题
上面的例子
publicstaticvoidmain (string [ ] args ) { User user1=new User; user1.setid(1L ); user1.setage(2L; User user2=new User (; user2. setid (空; user2.setage(3L; User user3=new User (; user3.setid(3L; user3.setage(4L; ListUser list=new ArrayList (; list.add(user1; list.add(user2; list.add(user3; setlongcorpids=list.parallel stream (.map ) user3360:getid ).distinct ).collect ) collectors.toset ); longid : corpids (logger.info ) ) removebefore:id='id; }logger.info('******我是华丽的分割线* * * * * * * () ) ) ) ) ) ) ) ) ) 65 corporporation for(longid:corpids ) logger.info ) removeafter:id='id; }之所以先做Collectors.toSet (),是因为想直接利用set的特性加重
执行结果
remove before:id=nullremovebefore:id=1remove before:id=3* * * * * * *我是华丽的分割线* * * * * * * remove after:id 当然,这也与集合的Object类型有关。 上面定义的Long只支持空值
但是,如果要使用获得的新list进行其他操作,建议删除null,以免意外发生异常。
当然,您也可以在检索值时添加、排序或更改map键值对
不再赘述
listlonguserid=userlist.parallel stream ().filter(user-user.getid )!=nulluser.getid(0).map (user :3360 getid ).distinct ).collectors.tolist ) ); 更多流方法特性参考:
33559 www.run OOB.com/Java/Java8- streams.html
JDK1.8新功能参考
33559 www.run OOB.com/Java/Java8- new-features.html