Stream流操作集合lamda写法代码样例
package com.demo.spring.test;
import com.alibaba.fastjson.JSONObject;
import com.demo.spring.dto.User;
import io.swagger.models.auth.In;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class LamdaTest1 {
public static void main(String[] args) {
List<String> list =
Arrays.asList("tom","jack","jimi","bike","ali","jps","jjjjj");
long count = list.stream().count();
System.out.println(count);
List<String> j = list.stream().filter(item -> item.startsWith("j")).limit(4).collect(Collectors.toList());
System.out.println("第一天"+j);
List<User> users = new ArrayList<>();
users.add(new User("tom","20"));
users.add(new User("jack","23"));
users.add(new User("bili","32"));
users.add(new User("tom","20"));
users.add(new User("kaili","33"));
Set<User> collect = users.stream().collect(Collectors.toSet());
System.out.println(collect);
Map<String, String> collect1 = collect.stream().collect(Collectors.toMap(user -> user.getUsername(), user -> user.getAge()));
System.out.println(collect1);
Map<String, String> collect2 = collect.stream().collect(Collectors.toMap(User::getUsername, User::getAge));
System.out.println("第二天"+collect2);
Stream<Integer> integerStream = Stream.of(10, 20, 30, 10, 5);
Optional<Integer> reduce = integerStream.reduce((a1, a2) -> (a1 + a2));
System.out.println(reduce.get());
Optional<User> max = users.stream().max((user1, user2) -> Integer.parseInt(user1.getAge()) - Integer.parseInt(user2.getAge()));
System.out.println("求最大值"+max);
Optional<User> min = users.stream().min((user1, user2) -> Integer.parseInt(user1.getAge()) - Integer.parseInt(user2.getAge()));
System.out.println("求最小值"+min);
boolean b = users.stream().anyMatch(a -> {
return Integer.parseInt(a.getAge()) > 33;
});
System.out.println(b);
boolean b1 = users.stream().allMatch(User -> {
return Integer.parseInt(User.getAge()) > 10;
});
System.out.println(b1);
List<User> collect3 = users.stream().
filter(item -> Integer.parseInt(item.getAge()) > 30).
collect(Collectors.toList());
System.out.println("过滤"+collect3);
Map<String, String> collect4 = users.stream()
.filter(item -> Integer.parseInt(item.getAge()) > 30)
.collect(Collectors.toMap(User::getUsername, User::getAge));
System.out.println("过滤list成map集合"+collect4);
users.stream().sorted((o1, o2) -> Integer.parseInt(o1.getAge()) - Integer.parseInt(o2.getAge())).forEach(item -> {
System.out.println("sorted排序"+item);
});
List<Integer> listInt = Arrays.asList(10,30,20,50,100,90);
List<Integer> collect5 = listInt.stream().skip(2).limit(3).collect(Collectors.toList());
System.out.println("跳过前2个,显示3个"+collect5);
}
}
执行结果
7
第一天[jack, jimi, jps, jjjjj]
[{"age":"33","username":"kaili"}, {"age":"32","username":"bili"}, {"age":"20","username":"tom"}, {"age":"23","username":"jack"}]
{kaili=33, tom=20, bili=32, jack=23}
第二天{kaili=33, tom=20, bili=32, jack=23}
75
求最大值Optional[{"age":"33","username":"kaili"}]
求最小值Optional[{"age":"20","username":"tom"}]
false
true
过滤[{"age":"32","username":"bili"}, {"age":"33","username":"kaili"}]
过滤list成map集合{kaili=33, bili=32}
sorted排序{"age":"20","username":"tom"}
sorted排序{"age":"20","username":"tom"}
sorted排序{"age":"23","username":"jack"}
sorted排序{"age":"32","username":"bili"}
sorted排序{"age":"33","username":"kaili"}
跳过前2个,显示3个[20, 50, 100]