1、Collectors.collectingAndThen()的使用
Collectors.collectingAndThen()
添加在集合末尾执行的单个操作,先把流中的所有元素传递给第一个参数,然后把生成的集合元素传递给第二个参数来处理。例如,
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Main {
public static class Person {
int age;
String name;
Person (int age,String name) {
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public static void main(String[] args) {
List<Person> pList = Arrays.asList(new Person(11,"mike"),new Person(22,"lynn"), new Person(33,"john"), new Person(44,"mickey"), new Person(55,"fiona"));
String result = pList.stream().collect(Collectors.collectingAndThen(Collectors.maxBy(Comparator.comparing(Person::getAge)), (Optional<Person> p) -> { return p.isPresent() ? p.get().getName() : "none";}
));
System.out.println(result);
System.exit(0); //success
}
}
2、Collectors.joining()的使用
Collectors.joining()
用来连接stream中的元素,例如,
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Main {
public static class Person {
int age;
String name;
Person (int age,String name) {
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public static void main(String[] args) {
List<Person> pList = Arrays.asList(new Person(11,"mike"),new Person(22,"lynn"), new Person(33,"john"), new Person(44,"mickey"), new Person(55,"fiona"));
String result1 = pList.stream().map(p -> p.getName()).collect(Collectors.joining(" "));
System.out.println(result1);
String result2 = pList.stream().map( p -> p.getName())
.collect(Collectors.joining(" ", "prefix "," suffix"));
System.out.println(result2);
String[] strArray = { "C","Java","Py"," : ","https://www.cjavapy.com" };
String str= Stream.of(strArray)
.map(arr -> new String(arr))
.collect(Collectors.joining());
System.out.println(str);
System.exit(0); //success
}
}
3、Collectors.counting()的使用
Collectors.counting()
用来统计stream中元素的个数,如下,
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Main {
public static class Person {
int age;
String name;
Person (int age,String name) {
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public static void main(String[] args) {
List<Person> pList = Arrays.asList(new Person(11,"mike"),new Person(22,"lynn"), new Person(33,"john"), new Person(44,"mickey"), new Person(55,"fiona"));
var count = pList.stream().collect(Collectors.counting());
System.out.println("stream() result :" + count);
System.exit(0); //success
}
}