1. Sort
Stream<T> sorted(); //按元素默认大小排序(必须实现Comparable接口)
Stream<T> sorted(Comparator<? super T> cp); //按指定Comparator比较的结果排序
public static void main(String[] args){
Stream<String> s = Stream.of("hello","JAVA","python","RUBY","PHP");
s.sorted().forEach(str-> System.out.print(str+"\t"));
System.out.println();
Stream<Integer> s1 = Stream.of(1,9,5,3,7);
s1.sorted(Comparator.reverseOrder()).forEach(str-> System.out.print(str+"\t"));
}
2. Remove duplicate elements
Stream<T> distinct(); //返回去除重复元素的Stream
Stream<String> s = Stream.of("hello","JAVA","hello","RUBY","JAVA");
s.distinct().forEach(str-> System.out.print(str+"\t"));
3. Intercept
Stream<T> limit(long); //截取Stream前long个元素
Stream<T> skip(long); //跳过Stream前long个元素
Stream<String> s = Stream.of("hello","JAVA","hello","RUBY","JAVA");
s.limit(3).forEach(str-> System.out.print(str+"\t"));
System.out.println();
Stream<Integer> s1 = Stream.of(1,9,5,3,7);
s1.skip(3).forEach(str-> System.out.print(str+"\t"));
4. concat combined
Stream<String> s1 = Stream.of("php","JAVA","python");
Stream<String> s2 = Stream.of("android", "ios");
Stream<String> s = Stream.concat(s1,s2);
s.forEach(str-> System.out.print(str+"\t"));
5. flatMap it is extracting the element list, constituting a new Stream
The element maps for the Stream, and then merged into a new Stream
List<String> s1 = new ArrayList<>();
s1.add( "php");
s1.add("JAVA");
s1.add("python");
List<String> s2 = Arrays.asList("android", "ios");
Stream<List> l = Stream.of(s1,s2);
Stream<String> s = l.flatMap(list -> list.stream());
s.forEach(str-> System.out.print(str+"\t"));
6. parallel converted to a parallel processing of Stream Stream
Stream elements are serial processing, i.e. can only be handled with a single thread, if you want to increase the efficiency of, for example, parallel sorting, simply using Parallel () can put into a Stream Stream one parallel processing by the method call, the subsequent operation will be processed in parallel as much as possible.
Stream<String> s = Stream.of("php","JAVA","python","android", "ios");
String[] result = s.parallel() //变成一个可以并行处理的Stream
.sorted(). //可以进行并行排序
toArray(String[]::new);
System.out.println(Arrays.toString(result));
7. The polymerization process of Stream
Optional<T> reduce(BinaryOperater<T> bo)
long count()
T max(Comparator<? super T> cp)//查找最大元素
T min(Comparator<? super T> cp) //查找最下元素
For IntStream, longStream, DoubleStream:
sum() //求和
average() //求平均值
Integer[] nums = {1,2,3,4,5,6};
long max = Stream.of(nums).max((i1,i2)->i1.compareTo(i2)).get();
long min = Stream.of(nums).min((i1,i2)->i1.compareTo(i2)).get();
System.out.println("最大值:"+max+"\t最小值:"+min);
IntStream ins1 = IntStream.builder().add(1).add(2).add(3).add(4).add(5).add(6).build();
IntStream ins2 = IntStream.builder().add(1).add(2).add(3).add(4).add(5).add(6).build();
Double avg = ins1.average().getAsDouble();
long sum = ins2.sum();
System.out.println("求和:"+sum+"\t平均值:"+avg);
8. Test Stream meets the elements
boolean allMatch(Predicate<? super T>) //所有元素均满足测试条件
boolean anyMatch(Predicate<? super T>) //至少一个元素满足测试条件
Integer[] nums = {1,2,3,4,5,6};
boolean max = Stream.of(nums).allMatch(x->x>0);
boolean min = Stream.of(nums).anyMatch(x->x>5);
System.out.println("元素全部>0:"+max+"\t存在元素>5:"+min);
9. forEach loop processing elements Stream
void forEach(Consumer<? super T> action)
Stream 10 is converted to the other types of
Object[] toArray() //转换为Object数组
A[] toArray(IntFunction<A[]>) //转换为A[]数组
<R, A> R collect(Collector<? super T, A, R> Collector) //转换为List/Set等集合类型
Stream<String> s1 = Stream.of("php","JAVA","python","android", "ios");
String[] arr = s1.toArray(String[]::new);
Stream<String> s2 = Stream.of("php","JAVA","python","android", "ios");
List<String> list = s2.collect(Collectors.toList());
System.out.println(Arrays.toString(arr));
System.out.println(list.toString());
11. summary
Oh java.util.stream.Stream problem that a lot of useful features
- Conversion operations: map, filter, sorted, distinct
- Merge operation: concat, flatMap
- Parallel processing: parallel
- Polymerization operation: reduce, count, max, min, sum, average
- Other operations: allMatch, anyMatch, forEach
reference
https://blog.csdn.net/qq_28410283/article/details/80783505
https://www.cnblogs.com/a-du/p/8289537.html