【JAVA秒會技術之Java8新特性】利用流快速處理集合的常見操作
阿新 • • 發佈:2018-12-14
例子1:對集合進行排序
List<Integer> list = Lists.newArrayList(1,1,2,2,5,3,4,6,6,5,2,7);
list.sort(null);
list.forEach(e -> System.out.print(e)); //輸出結果:12253466527
例子2:對集合過濾
List<Integer> list = Lists.newArrayList(1,1,2,2,5,3,4,6,6,5,2,7); list.removeIf(s-> s.equals(2)); list.forEach(e -> System.out.print(e)); //輸出結果:15346657
例子3:集合1中的元素,同時存在在集合2中的(注意不會去重)
List<Integer> list1 = Lists.newArrayList(1,1,2,2,5,3,4,6,6,5,2,7);
List<Integer> list2 = Lists.newArrayList(1,1,3,5,7,8);
list1.retainAll(list2);
list1.forEach(e -> System.out.print(e)); //輸出結果:15357
例子4:集合去重
List<Integer> list = Lists.newArrayList(1,1,2,2,5,3,4,6,6,5,2,7); list = list1.stream().distinct().collect(Collectors.toList()); list.forEach(e -> System.out.print(e)); //輸出結果:1253467
例子5:集合過濾(2)
List<Integer> list1 = Lists.newArrayList(1,1,2,2,5,3,4,6,6,5,2,7);
list1 = list1.stream().filter(s -> !s.equals(2)).collect(Collectors.toList());
list1.forEach(e -> System.out.print(e)); //輸出結果:115346657
例子6:集合對映
User user1 = new User(); user1.setId(1); user1.setUserName("張三"); User user2 = new User(); user2.setId(2); user2.setUserName("李四"); User user3 = new User(); user3.setId(3); user3.setUserName("王五"); User user4 = new User(); user4.setId(4); user4.setUserName("趙六"); User user5 = new User(); user5.setId(5); user5.setUserName("田七"); ArrayList<User> userList = Lists.newArrayList(user1,user2,user3,user4,user5); List<String> userNameList = userList.stream().map(User :: getUserName).collect(Collectors.toList()); userNameList.forEach(e -> System.out.println(e)); //輸出結果:張三 李四 王五 趙六 田七
例子7:List集合轉換成Map集合
User user1 = new User();
user1.setId(1);
user1.setUserName("張三");
User user2 = new User();
user2.setId(2);
user2.setUserName("李四");
User user3 = new User();
user3.setId(3);
user3.setUserName("王五");
User user4 = new User();
user4.setId(4);
user4.setUserName("趙六");
User user5 = new User();
user5.setId(5);
user5.setUserName("田七");
ArrayList<User> userList = Lists.newArrayList(user1,user2,user3,user4,user5);
Map<Integer, String> userMap = userList.stream().collect(Collectors.toMap(User :: getId, User :: getUserName));
userMap.forEach((key,value) -> {
System.out.println(key + ":" + value);
}); //輸出結果:1:張三 2:李四 3:王五 4:趙六 5:田七