Stream流根据对象的某个字段排序
1、根据OuterUserVo里面的id进行排序
2、reversed() 表示从大到小降序、去掉则表示升序排列
List< OuterUserVo> list = new ArrayList < > ( ) ;
OuterUserVo vo = new OuterUserVo ( ) ;
vo. setId ( 3 L) ;
OuterUserVo vo1 = new OuterUserVo ( ) ;
vo1. setId ( 2 L) ;
OuterUserVo vo2 = new OuterUserVo ( ) ;
vo2. setId ( 4 L) ;
list. add ( vo) ;
list. add ( vo1) ;
list. add ( vo2) ;
List< OuterUserVo> list1 = new ArrayList < > ( ) ;
OuterUserVo vo3 = new OuterUserVo ( ) ;
vo3. setId ( 5 L) ;
OuterUserVo vo4 = new OuterUserVo ( ) ;
vo4. setId ( 6 L) ;
list1. add ( vo3) ;
list1. add ( vo4) ;
list. addAll ( list1) ;
list. stream ( ) . sorted ( Comparator. comparing ( OuterUserVo: : getId) . reversed ( ) ) . collect ( Collectors. toList ( ) ) . forEach ( System. out: : println) ;
Stream流根据对象的某个字段去重
@Test
public void test2 ( ) {
List< User> userList = new ArrayList < > ( ) ;
userList. add ( new User ( 1 , "国王" , "123" ) ) ;
userList. add ( new User ( 1 , "国王" , "666" ) ) ;
userList. add ( new User ( 1 , "乞丐" , "123" ) ) ;
userList. stream ( ) .
collect ( Collectors.
collectingAndThen (
Collectors. toCollection (
( ) - >
new TreeSet < > (
Comparator. comparing ( e - > e. getId ( ) + e. getUsername ( ) ) ) ) , ArrayList: : new ) ) . forEach ( System. out: : print) ;
}