1.創建實體類Stu
@Builder
public class Stu {
@NotNull
private Long id;
@NotNull
private String name;
@NotNull
private String sex;
@NotNull
private Integer myAge;
public Stu() {
}
public Stu(Long id, String name, String sex, Integer myAge) {
this.id = id;
this.name = name;
this.sex = sex;
this.myAge = myAge;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Integer getMyAge() {
return myAge;
}
public void setMyAge(Integer myAge) {
this.myAge = myAge;
}
}
2.測試方法
public static void main(String[] args) {
List<Stu> stuList = new ArrayList<>();
Stu stu1 = Stu.builder().id(1L).sex("男").name("admin1").myAge(18).build();
Stu stu2 = Stu.builder().id(2L).sex("男").name("admin2").myAge(19).build();
Stu stu3 = Stu.builder().id(3L).sex("女").name("admin3").myAge(18).build();
Stu stu4 = Stu.builder().id(4L).sex("男").name("admin4").myAge(18).build();
stuList.add(stu1);
stuList.add(stu2);
stuList.add(stu3);
stuList.add(stu4);
// 遍歷list
stuList.forEach(stu -> System.out.println("stu = [" + stu + "]"));
// 過濾年齡爲18的數據
List<Stu> ageFilterList = stuList.stream().filter(stu ->
stu.getMyAge().equals(18)).collect(Collectors.toList());
System.out.println("過濾年齡爲18的數據 = "+JSON.toJSONString(ageFilterList));
// 統計年齡爲18的個數
Long ageCount = stuList.stream().filter(stu -> stu.getMyAge()==18).count();
System.out.println("ageCount = [" + ageCount + "]");
// 按照性別分組
Map<String, List<Stu>> groupMap = stuList.stream().collect(Collectors.groupingBy(stu ->
stu.getSex()));
System.out.println("按照性別分組 = "+JSON.toJSONString(groupMap));
// List轉化Map
Map<Long, Object> map = stuList.stream().collect(Collectors.toMap
(Stu::getId,Stu::getName));
map.forEach((k, v) -> System.out.println("list轉map k = [" + k + "]"+"v = ["+v+"]"));
// allMatch 判斷所有Stu的age都爲18
boolean matched = stuList.stream().allMatch(stu -> stu.getMyAge()==18);
System.out.println("matched = [" + matched + "]");
// 返回姓名列表
List<String> names = stuList.stream().map(stu ->
stu.getName()).collect(Collectors.toList());
System.out.println("names = [" + JSON.toJSONString(names) + "]");
//查找性別爲男的第一個
Optional<Stu> optionals = stuList.stream().filter(stu ->
stu.getSex().equals("男")).findFirst();
System.out.println("性別爲男的員工 = [" + JSON.toJSONString(optionals) + "]");
// 查找年齡的總歲
Long myageCount = stuList.stream().mapToLong(Stu::getMyAge).sum();
System.out.println("總歲數 = [" + myageCount + "]");
// 按年齡的降序來列出信息
List<Stu> sortAgeStuList = stuList.stream().sorted((e1,e2)->
Integer.compare(e2.getMyAge(),e1.getMyAge())).collect(Collectors.toList());
System.out.println("年齡的降序 = [" + JSON.toJSONString(sortAgeStuList) + "]");
// 按年齡的降序前兩條
List<Stu> sortAgeLimit = stuList.stream().sorted((e1,e2)->
Integer.compare(e2.getMyAge(),e1.getMyAge())).limit(2).collect(Collectors.toList());
System.out.println("年齡的降序 = [" + JSON.toJSONString(sortAgeLimit) + "]");
// 獲取平均年齡
OptionalDouble avgAge = stuList.stream().mapToInt(c->c.getMyAge()).average();
System.out.println("平均年齡 = "+avgAge.getAsDouble());
// 判斷所有年齡是否爲19返回布爾數組
List<Boolean> list = stuList.stream().map(stu -> stu.getMyAge().intValue() == 19).collect(Collectors.toList());
System.out.println(JSON.toJSONString(list));
// 替換所有的年齡數值
List<Stu> stuListReplace = stuList.stream().map((stu) -> {
stu.setMyAge(5);
return stu;
}).collect(Collectors.toList());
System.out.println("替換後的集合 = [" + JSON.toJSONString(stuListReplace) + "]");
}
}
控制檯打印:
stu = [Stu{id=1, name='admin1', sex='男', myAge=18}]
stu = [Stu{id=2, name='admin2', sex='男', myAge=19}]
stu = [Stu{id=3, name='admin3', sex='女', myAge=18}]
stu = [Stu{id=4, name='admin4', sex='男', myAge=18}]
過濾年齡爲18的數據 = [{"id":1,"myAge":18,"name":"admin1","sex":"男"},{"id":3,"myAge":18,"name":"admin3","sex":"女"},{"id":4,"myAge":18,"name":"admin4","sex":"男"}]
ageCount = [3]
按照性別分組 = {"女":[{"id":3,"myAge":18,"name":"admin3","sex":"女"}],"男":[{"id":1,"myAge":18,"name":"admin1","sex":"男"},{"id":2,"myAge":19,"name":"admin2","sex":"男"},{"id":4,"myAge":18,"name":"admin4","sex":"男"}]}
list轉map k = [1]v = [admin1]
list轉map k = [2]v = [admin2]
list轉map k = [3]v = [admin3]
list轉map k = [4]v = [admin4]
matched = [false]
names = [["admin1","admin2","admin3","admin4"]]
性別爲男的員工 = [{"id":1,"myAge":18,"name":"admin1","sex":"男"}]
總歲數 = [73]
年齡的降序 = [[{"id":2,"myAge":19,"name":"admin2","sex":"男"},{"id":1,"myAge":18,"name":"admin1","sex":"男"},{"id":3,"myAge":18,"name":"admin3","sex":"女"},{"id":4,"myAge":18,"name":"admin4","sex":"男"}]]
年齡的降序 = [[{"id":2,"myAge":19,"name":"admin2","sex":"男"},{"id":1,"myAge":18,"name":"admin1","sex":"男"}]]
平均年齡 = 18.25
[false,true,false,false]
替換後的集合 = [[{"id":1,"myAge":5,"name":"admin1","sex":"男"},{"id":2,"myAge":5,"name":"admin2","sex":"男"},{"id":3,"myAge":5,"name":"admin3","sex":"女"},{"id":4,"myAge":5,"name":"admin4","sex":"男"}]]