Java8集合常用操作记录和实现原理学习记录

1、匿名类替换

//Before Java 8:
new Thread(new Runnable() {
    @Override
    public void run() {
        System.out.println("Before Java8 ");
    }
}).start();
//Java 8 way:
new Thread( () -> System.out.println("In Java8!") ).start();

2、list集合遍历

List features = Arrays.asList("Lambdas", "Default Method", "Stream API",
 "Date and Time API");
features.forEach(n -> System.out.println(n));

3、简单流式计算Collection操作

List<String> filtered = strList.stream().filter(x -> x.length()> 2)
                                        .collect(Collectors.toList());
System.out.printf("Original List : %s, filtered list : %s %n", 
                  strList, filtered);

Output :
Original List : [abc, , bcd, , defg, jk], filtered list : [abc, bcd, defg]
List<String> G7 = Arrays.asList("USA", "Japan", "France", "Germany", 
                                "Italy", "U.K.","Canada");
String G7Countries = G7.stream().map(x -> x.toUpperCase())
                                .collect(Collectors.joining(", "));
System.out.println(G7Countries);

Output : 
USA, JAPAN, FRANCE, GERMANY, ITALY, U.K., CANADA

4、简单流式计算distinct()操作

List<Integer> numbers = Arrays.asList(9, 10, 3, 4, 7, 3, 4);
List<Integer> distinct = numbers.stream().map( i -> i*i).distinct()
                                         .collect(Collectors.toList());
System.out.printf("Original List : %s,  Square Without duplicates :
                   %s %n", numbers, distinct);

Output :
Original List : [9, 10, 3, 4, 7, 3, 4],  Square Without 
                                         duplicates : [81, 100, 9, 16, 49]

5、计算List中的元素的最大值,最小值,总和及平均值

List<Integer> primes = Arrays.asList(2, 3, 5, 7, 11, 13, 17, 19, 23, 29);
IntSummaryStatistics stats = primes.stream().mapToInt((x) -> x)
                                            .summaryStatistics();
System.out.println("Highest prime number in List : " + stats.getMax());
System.out.println("Lowest prime number in List : " + stats.getMin());
System.out.println("Sum of all prime numbers : " + stats.getSum());
System.out.println("Average of all prime numbers : " + stats.getAverage());

Output : 
Highest prime number in List : 29
Lowest prime number in List : 2
Sum of all prime numbers : 129
Average of all prime numbers : 12.9

以上参考文章:https://www.cnblogs.com/zlw-xf/p/11051583.html

实际应用操作

1、list对象集合查询是否存在重复主键并筛选出来

 		// 学员编号重复计数情况
        Map<Object, Long> collectCount = diaExamsInfosPoArrayList.stream().collect(
                Collectors.groupingBy(DiaExamsInfosPo::getStuNumber, Collectors.counting()));
        // 筛选重复大于1的信息值
        List<Map<String, Long>> collectResult = collectCount.keySet().stream().
                filter(key -> collectCount.get(key) > 1).map(key -> {
            Map<String, Long> map = new HashMap<>();
            map.put((String) key, collectCount.get(key));
            return map;
        }).collect(Collectors.toList());
       

2、list集合根据条件筛选成两个集合

//创建集合  Set类似
List<Integer> list = Lists.newArrayList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11);
//使用stream流进行分组 
Map<Boolean, List<Integer>> preAvg = list.stream()
        .collect(Collectors.groupingBy(x -> x < 2 || x > 4));
List<Integer> tr = preAvg.get(true);
List<Integer> fa = preAvg.get(false);
System.out.println("true" + tr);
System.out.println("false" + fa);

3、list集合将对象按照某个字段排序

// 升序
list = campusQueryVoList.stream()
.sorted(Comparator.comparing(CampusQueryVo::getRankNumber))
.collect(Collectors.toList());
除此还包含其他操作,整体操作语法类似于scala语言

具体实现原理可参考

https://blog.csdn.net/weixin_32280593/article/details/114881549

官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值