java8 list转map,list集合中的元素的属性转set,list集合中对象的属性转list,list 排序,list分组...

一.使用java8对list操作

  1.1list转map

1 private Map<String, Member> getMemberMap() {       
2    List<Member> members = mberMapper.selectMemberList(new Member());
3    if(CollectionUtils.isEmpty(members)){
4       return null;
5    }
6    return members.stream().collect(Collectors.toMap(Member::getPhone, m -> m, (k1, k2) -> k1)); /** 去重策略,如果有多个相同的key,保留第一个*/
7 }

  1.2list中对象字段转一个list集合

1   public static List<String> getStudentNameList(List<Student> list ){
2         List<String> result = list.stream().map(student->student.getName()).collect(Collectors.toList());
3         for (String name : result) {
4             System.out.println("name:"+name);
5         }
6         return result;
7     }

  1.3list中对象字段转一个set集合

  public static Set<String> getStudentNameSet(List<Student> list ){
        Set<String> result = list.stream().map(student->student.getName()).collect(Collectors.toSet());
        for (String name : result) {
            System.out.println("name:"+name);
        }
        return result;
    }

   1.4 list 多字段排序,第一个字段降序,第二个字段升序

 1 public static void main(String[] args) {
 2         List<SysUserOnline> sysUserOnlines1= new ArrayList<>();
 3         String date = DateUtils.getDate();
 4         Date date1 = DateUtils.parseDate(date);
 5         System.out.println("date1===="+ date1.toString());
 6         SysUserOnline s1 = new SysUserOnline();
 7         s1.setDateAlloCount(3);
 8         s1.setLastAccessTime(date1);
 9         SysUserOnline s2 = new SysUserOnline();
10         s2.setDateAlloCount(1);
11         s2.setLastAccessTime(DateUtils.addDays(date1,-1));
12         SysUserOnline s3 = new SysUserOnline();
13         s3.setDateAlloCount(2);
14         s3.setLastAccessTime(date1);
15         SysUserOnline s4 = new SysUserOnline();
16         s4.setDateAlloCount(2);
17         s4.setLastAccessTime(DateUtils.addDays(date1,1));
18         sysUserOnlines1.add(s1);
19         sysUserOnlines1.add(s2);
20         sysUserOnlines1.add(s3);
21         sysUserOnlines1.add(s4);
22 
23         System.out.println(sysUserOnlines1.toString());
24         List<SysUserOnline> collect = sysUserOnlines1.stream().sorted(Comparator.comparing(SysUserOnline::getLastAccessTime).reversed().thenComparing(SysUserOnline::getDateAlloCount)).collect(Collectors.toList());
25         System.out.println("=======================");
26         System.out.println(collect.toString());
27     }

 1.5list分组,根据id分组

1 //List 以ID分组 Map<Integer,List<Apple>>
2 Map<Integer, List<Apple>> groupBy = appleList.stream().collect(Collectors.groupingBy(Apple::getId));
3 
4 System.err.println("groupBy:"+groupBy);
5 {1=[Apple{id=1, name='苹果1', money=3.25, num=10}, Apple{id=1, name='苹果2', money=1.35, num=20}], 2=[Apple{id=2, name='香蕉', money=2.89, num=30}], 3=[Apple{id=3, name='荔枝', money=9.99, num=40}]}

参照:

 
 

 

转载于:https://www.cnblogs.com/djq-jone/p/10773152.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值