JDK 1.8新特性(foreach、Stream、lamdba

2019-06-18  本文已影响0人  黄靠谱

JDK 1.8遍历和Stream

不一样的遍历

摒弃掉传统的for循环的写法,让你体验到遍历的快感

    for (int index = 0; index < list.size(); index++) {
        User user = list.get(index);
        System.out.println(user.getName());
        System.out.println(user.getId());
    }

    for (User user : list) {
        System.out.println(user.getName());
        System.out.println(user.getId());
    }
    
    //执行多行业务代码,需要用大括号包起来
    list.forEach(user -> {
                System.out.println(user.getName());
                System.out.println(user.getId());
            }
    );

    //只执行一行业务代码
    list.forEach(user -> System.out.println(user.getName()));
    
    List<String> strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
    //如果list中的对象是基本类型的对象,则可以直接通过 :: 获取打印
    strings.forEach(System.out::println);

实战

获取一个list当中实体类类的idList

 List<String> oppIds = list.stream().map(OpportunityVO::getOppId).collect(Collectors.toList());

过滤一个list,获取到所有的activityId不为空的去重Set

        Set<String> activityIds = list.stream().filter(opp -> StringUtils.isNotEmpty(opp.getActivityId()))
                .map(OpportunityVO::getActivityId).collect(Collectors.toSet());

Stream API

// 获取所有用户名卫hanmeimei的用户数据
List<A> firstA= AList.stream() .filter(a -> "hanmeimei".equals(a.getUserName())) .collect(Collectors.toList());

// 获取用户年龄在 30 <age <60 之间的用户
List<User> midAgeUserList = list.stream().filter(user -> 30 < user.getAge())
        .filter(user -> 60 > user.getAge())
        .collect(Collectors.toList());

int count = strings.stream().filter(string -> string.isEmpty()).count();

// forEach这两个类都支持这个方法
list.stream().forEach(user -> System.out.println(user.getName()));
list.forEach(user -> System.out.println(user.getName()));

list.stream().sorted().collect(Collectors.toList());
list.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
list.stream().sorted(Comparator.comparing(Student::getAge)).collect(Collectors.toList());
  

创建线程

可以简化匿名内部类的编写

 new Thread(() -> {
            for (int i = 0; i < 5; i++) {
                System.out.println("hello kitty" + i);
            }
        }).start();
上一篇 下一篇

猜你喜欢

热点阅读