java8 Stream 常用使用方法

1.forEach循环

list.forEach(item -> {

});

1.foreach的实现基于Iterator;
2.不能使用foreach对数组或容器进行赋值;
3.可以使用foreach修改数组或容器的对象的属性;
4.赋值行为尽量使用for循环。

2.java8 stream list转map及问题解决

3.java8 stream 集合取交集、并集、差集、去重并集

public static void main(String[] args) {
    List<String> list1 = new ArrayList<String>();
    list1.add("1");
	list1.add("2");
	list1.add("3");
	list1.add("5");
	list1.add("6");
 
    List<String> list2 = new ArrayList<String>();
    list2.add("2");
	list2.add("3");
	list2.add("7");
	list2.add("8");
 
    // 交集
    List<String> intersection = list1.stream().filter(item -> list2.contains(item)).collect(toList());
    System.out.println("---交集 intersection---");
    intersection.parallelStream().forEach(System.out :: println);
 
    // 差集 (list1 - list2)
    List<String> reduce1 = list1.stream().filter(item -> !list2.contains(item)).collect(toList());
    System.out.println("---差集 reduce1 (list1 - list2)---");
    reduce1.parallelStream().forEach(System.out :: println);
 
    // 差集 (list2 - list1)
    List<String> reduce2 = list2.stream().filter(item -> !list1.contains(item)).collect(toList());
    System.out.println("---差集 reduce2 (list2 - list1)---");
    reduce2.parallelStream().forEach(System.out :: println);
 
    // 并集
    List<String> listAll = list1.parallelStream().collect(toList());
    List<String> listAll2 = list2.parallelStream().collect(toList());
    listAll.addAll(listAll2);
    System.out.println("---并集 listAll---");
    listAll.parallelStream().forEachOrdered(System.out :: println);
 
    // 去重并集
    List<String> listAllDistinct = listAll.stream().distinct().collect(toList());
    System.out.println("---得到去重并集 listAllDistinct---");
    listAllDistinct.parallelStream().forEachOrdered(System.out :: println);
 
    System.out.println("---原来的List1---");
    list1.parallelStream().forEachOrdered(System.out :: println);
    System.out.println("---原来的List2---");
    list2.parallelStream().forEachOrdered(System.out :: println);
 
 //合并去重
        List<String> list3= Stream.of(list2, list22).flatMap(Collection::stream).distinct()
                .collect(Collectors.toList());
System.out.println("---合并去重的List3---");
}

4.java8 stream 检查list集合中是否存在某个值

list.stream().filter(m->m.getName().equals("B")).findAny().isPresent();
//如果有返回true

5.java8 stream 过滤

List<Test> v = list.stream().filter(item -> "B".equals(item.getName())
&& "02".equals(item.getId())).collect(Collectors.toList());
System.out.println("list:" + v.get(0).getName());

6.java8 stream 分组

//按 id+name 分组
Map<Test, List<Test>> lMap = list.stream().
                collect(Collectors.groupingBy(current -> {
                    Test item = new Test();
                    item.setId(current.getId());
                    item.setName(current.getName());
                    return item;
                }));
 //将数据 id 分组
 Map<String, List<Test>> idMap = list.stream()
                .collect(Collectors.groupingBy(Test::getId));

7.java8 stream 多字段排序

7.java8 stream 统计

List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
IntSummaryStatistics stats = numbers.stream().mapToInt((x) -> x).summaryStatistics();
System.out.println("列表中最大的数 : " + stats.getMax());
System.out.println("列表中最小的数 : " + stats.getMin());
System.out.println("所有数之和 : " + stats.getSum());
System.out.println("平均数 : " + stats.getAverage());
//获取年龄最大的Test
        Test maxAge = list.stream().max(Comparator.comparing(Test::getAge)).get();
        System.out.println(maxAge.getAge());
        //获取年龄最小的Test
        Test minAge = list.stream().min(Comparator.comparing(Test::getAge)).get();
        System.out.println(minAge.getAge());
        //过滤出年龄是20的Test,想过滤出什么条件的都可以
        List<Test> list1 = list.stream().filter(person -> person.getAge() == 20).collect(Collectors.toList());
        //统计出年龄等于20的个数
        long count = list.stream().filter(person -> person.getAge() == 20).count();
        //获得年龄的平均值
        double asDouble = list.stream().mapToInt(person -> person.getAge()).average().getAsDouble();
        //获得年龄的求和
        int sum = list.stream().mapToInt(person -> person.getAge()).sum();

8.java8 stream map

List<String> list= 1list.stream().map(e -> e.getBudgetProjectId()).distinct()
                    .collect(Collectors.toList());
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值