1. 程式人生 > >【JAVA秒會技術之Java8新特性】利用流快速處理集合的常見操作

【JAVA秒會技術之Java8新特性】利用流快速處理集合的常見操作

例子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:田七

其實流的應用還有很多,很強大,但是也有很多坑,大家自行摸索吧!