stream 使用示例
import one
.util
.streamex
.StreamEx
;
import java
.io
.IOException
;
import java
.nio
.file
.Files
;
import java
.nio
.file
.Paths
;
import java
.util
.*
;
import java
.util
.stream
.Collectors
;
import java
.util
.stream
.Stream
;
public class TestStram {
public static void main(String
[] args
) throws IOException
{
List
<User> userList
=createUserList(100);
userList
.stream().forEach(System
.out
::println
);
System
.out
.println("*****************");
Stream
.of(userList
).forEach(System
.out
::println
);
System
.out
.println("*****************");
Stream
.empty();
System
.out
.println("*****************");
List
<User> userList2
=createUserList(100);
List
<User> userList3
=createUserList(10);
Stream
.concat(userList2
.stream(),userList3
.stream()).forEach(System
.out
::println
);
System
.out
.println("###############");
List
<User> userList4
=createUserList(100);
userList4
.stream().filter(user
-> user
.getAge()%2==0).collect(Collectors
.toList()).forEach(System
.out
::println
);
System
.out
.println("@@@@@@@@@@@@@@@@@@");
List
<User> userList5
=createUserList(100);
userList5
.stream().filter(user
->user
.getAge()%2!=0).map(user
->{
Employee employee
=new Employee();
employee
.setEmployeeId(user
.getUserId());
employee
.setUserName(user
.getName());
return employee
;
}).peek(System
.out
::println
).collect(Collectors
.toList());
System
.out
.println("&&&&&&&&&&&&&&&&&&&&&&");
List
<User> userList6
=createUserList(1,30);
List
<User> userList7
=createUserList(31,60);
List
<User> userList8
=createUserList(61,90);
List
<List
<User>> userList9
= new ArrayList<>();
userList9
.add(userList6
);
userList9
.add(userList7
);
userList9
.add(userList8
);
System
.out
.println(userList9
.toString());
userList9
.stream().flatMap(Collection
::stream
).collect(Collectors
.toList()).forEach(System
.out
::println
);
System
.out
.println("+++++++++++++++++++排序++++++++++");
userList5
.stream().sorted(Comparator
.comparing(User
::getAge
)).collect(Collectors
.toList()).forEach(System
.out
::println
);
userList5
.stream().sorted(Comparator
.comparing(User
::getAge
).reversed()).peek(System
.out
::println
).collect(Collectors
.toList());
userList5
.stream().sorted(Comparator
.comparing(User
::getAge
).reversed())
.sorted(Comparator
.comparing(User
::getUserId
)).collect(Collectors
.toList());
System
.out
.println("----------------统计--------");
int age
=userList5
.stream().mapToInt(User
::getAge
).min().orElse(0);
User user
=userList5
.stream().min(Comparator
.comparing(User
::getAge
)).orElse(null
);
userList5
.stream().filter(s1
->s1
.getAge()>=30).filter(s1
->s1
.getAge()<=50).collect(Collectors
.toList());
int maxgae
=userList5
.stream().mapToInt(User
::getAge
).max().orElse(0);
User maxUser
=userList5
.stream().max(Comparator
.comparing(User
::getAge
)).orElse(null
);
int sumage
=userList5
.stream().mapToInt(User
::getAge
).sum();
double avgage
=userList5
.stream().mapToInt(User
::getAge
).average().orElse(0);
boolean havingAll60
=userList5
.stream().allMatch(user1
-> user1
.getAge()>60);
boolean havingAny60
=userList5
.stream().anyMatch(user1
-> user1
.getAge()>60);
boolean havingNo60
=userList5
.stream().noneMatch(user1
-> user1
.getAge()>60);
List
<Integer> userNewAgeList
=userList5
.stream().map(user1
->user1
.getAge()-10).collect(Collectors
.toList());
List
<User> userList1
=userList5
.stream().distinct().collect(Collectors
.toList());
List
<User> userList10
=StreamEx
.of(userList5
).distinct(user1
-> user1
.getAge()>60).toList();
int sumage2
=userList5
.stream().mapToInt(User
::getAge
).sum();
int sumage3
=userList5
.stream().map(User
::getAge
).reduce(Integer
::sum
).orElse(0);
String s
=userList5
.stream().map(User
::getName
).collect(Collectors
.joining(","));
List
<String> nameList
=userList5
.stream().filter(user1
-> user1
.getAge()>60).map(User
::getName
).collect(Collectors
.toList());
Set
<User> userSet
=userList5
.stream().filter(user1
-> user1
.getAge()>60).collect(Collectors
.toSet());
Vector
<String> stringVector
= userList5
.stream().filter(user1
-> user1
.getAge() > 60).map(User
::getName
).collect(Collectors
.toCollection(Vector
::new));
Map
<String, Integer> userHa
=userList5
.stream().filter(user1
-> user1
.getAge()>60).collect(Collectors
.toMap(User
::getName
,User
::getAge
));
Long count
=userList5
.stream().filter(user1
-> user1
.getAge()>60).count();
LongSummaryStatistics countLongSummaryStatistics
=userList5
.stream().filter(user1
-> user1
.getAge()>60).collect(Collectors
.summarizingLong(User
::getAge
));
System
.out
.println("countLongSummaryStatistics ==="+countLongSummaryStatistics
);
System
.out
.println("countLongSummaryStatistics count ==="+countLongSummaryStatistics
.getCount());
LongSummaryStatistics countLongSummaryStatistics2
=userList5
.stream().filter(user1
-> user1
.getAge()>60).mapToLong(User
::getAge
).summaryStatistics();
DoubleSummaryStatistics cou
= userList5
.stream().filter(user1
-> user1
.getAge()>60).mapToDouble(User
::getAge
).summaryStatistics();
System
.out
.println("countLongSummaryStatistics ==="+cou
);
System
.out
.println("countLongSummaryStatistics count ==="+cou
.getCount());
Map
<Boolean
, List
<User>> userListMap
=userList5
.stream().collect(Collectors
.partitioningBy(user1
-> user1
.getAge()>30));
System
.out
.println("大于30岁的userList"+userListMap
.get(true));
System
.out
.println("小于30岁的userList"+userListMap
.get(false));
Map
<Object
,List
<User>> booleanListMap
= userList5
.stream().collect(Collectors
.groupingBy(user1
-> user1
.getAge()%2==0));
System
.out
.print("按照年龄岁数的奇数偶数分组"+booleanListMap
);
Map
<Object
,List
<User>> booleanListMap2
=userList5
.stream().parallel().collect(Collectors
.groupingBy(user1
-> user1
.getAge()%2==0));
System
.out
.print("按照年龄岁数的奇数偶数分组"+booleanListMap2
);
userList5
.parallelStream().collect(Collectors
.groupingBy(user1
-> user1
.getAge()%2==0));
Files
.lines(Paths
.get("E://names.txt")).collect(Collectors
.toList()).forEach(System
.out
::println
);
List
<String> userList11
=userList5
.stream().filter(s1
->s1
.getAge()%2!=0).map(user1
->{
return user1
.getName().toLowerCase();
}).collect(Collectors
.toList());
User user12
=userList5
.stream().findFirst().orElse(null
);
}
public static List
<User> createUserList(int count
){
List
<User> userList
=new ArrayList<>();
for(int i
=1;i
<=count
;i
++){
User user
=new User();
user
.setAge(i
%100);
user
.setUserId(i
);
user
.setName(i
+"name");
userList
.add(user
);
}
return userList
;
}
public static List
<User> createUserList(int startAge
,int endAge
){
List
<User> userList
=new ArrayList<>();
for(int i
=startAge
;i
<=endAge
;i
++){
User user
=new User();
user
.setAge(i
);
user
.setUserId(i
);
user
.setName(i
+"name");
userList
.add(user
);
}
return userList
;
}
}
User类
import lombok
.Data
;
@Data
public class User {
private int userId
;
private String name
;
private int age
;
}
Employee 类
import lombok
.Data
;
@Data
public class Employee {
private int employeeId
;
private String userName
;
private int salary
;
}