改文章的理解都是作者自己的理解,哪里不对的地方还希望指出!!!!!
一、distince()
作用:去掉流中的重复元素
java
public static void main(String[] args) {
List<Integer> distinct_list = new ArrayList<>(Arrays.asList(1,1,2,2,33,34));
List<Integer>tem_list=distinct_list.stream().distinct().collect(Collectors.toList());
Stream<Integer> stream = count_list.stream().distinct();
System.out.println(tem_list);
}
运行结果:[1, 2, 33, 34]
二、count ()
作用:计算流中元素的个数
java
public static void main(String[] args) {
List<Integer> count_list = new ArrayList<>(Arrays.asList(1,1,2,2,33,34));
Long tem_list_count = count_list.stream().count();
System.out.println(tem_list_count);
}
运行结果:6
三、Arrays.stream()和Stream.of()
作用:创建Stream流
java
public static void main(String[] args) {
String [] array = new String[]{"你好","世界"};
Stream<String> arrays_string = Arrays.stream(array);
Stream<String> of_string = Stream.of(array);
List<String> arrays_list = arrays_string.collect(Collectors.toList());
List<String> of_list = of_string.collect(Collectors.toList());
System.out.println("Arrays.stream -> " + arrays_list);
System.out.println("Stream.of -> " + of_list);
}
运行结果: Arrays.stream -> [你好, 世界]
Stream.of -> [你好, 世界]
注意: Stream.of()的执行代码其实调用的是Arrays.stream()。
javapublic static<T> Stream<T> of(T... values) { return Arrays.stream(values); }
四、filter()
作用:过滤掉不符合条件的元素,得到自己想要的元素集合
java
public static void main(String[] args) {
List<Integer> filter_list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6));
System.out.println(filter_list.stream().filter(k -> {
return k > 3;
}).collect(Collectors.toList()));
}
运至结果:[4, 5, 6]
注意:
java1、 System.out.println(filter_list.stream().filter(k -> { return k > 3; }).collect(Collectors.toList())); 2、 System.out.println(filter_list.stream().filter(k -> k > 3).collect(Collectors.toList()));
1、2代码是一样的原理,学过C++的都知道Lambda表达式,k就相当于filter方法的形参,通过条件语句进行判断返回
五、map()
功能:映射,将一个流中的某个元素转换为另外一种形式的流。
java
public static void main(String[] args) {
List<Integer> filter_list = new ArrayList<>(Arrays.asList(2, 4, 6, 8, 10, 12));
System.out.println(filter_list.stream().map(k -> {
return k / 2;
}).collect(Collectors.toList()));
}
运行结果:1,2,3,4,5,6
六、 anyMatch()和allMatch()
功能:匹配元素,anyMatch()若有一个条件返回true,反之false,allMatch()若所有都满足条件返回true,反之false
java
public static void main(String[] args) {
List<Integer> filter_list = new ArrayList<>(Arrays.asList(2, 4, 6, 8, 10, 12));
System.out.println(filter_list.stream().anyMatch(k -> k > 6));
System.out.println(filter_list.stream().allMatch(k -> k > 6));
}
运行结果:true
false
七、skip()和limit()
skip(n)功能:丢弃第n个元素前面的元素
limit(n)功能:只要n个元素
skip()加上limit()功能组合起来就可以形成分页功能
java
public static void main(String[] args) {
List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6));
List<Integer> skip_list = list.stream().skip(2).collect(toList());
List<Integer> limit_list = list.stream().limit(3).collect(toList());
System.out.println("skip_list = " + skip_list);
System.out.println("limit_list = " + limit_list);
final int[] i = {-2};
List<List<Integer>> skip_limit_list = list.stream().map(k -> {
return list.stream().skip(i[0] += 2).limit(2).collect(toList());
}).collect(toList());
System.out.println("skip_limit_list = " + skip_limit_list);
}
运行结果:skip_list = [3, 4, 5, 6]
limit_list = [1, 2, 3]
skip_limit_list = [[1, 2], [3, 4], [5, 6], [], [], []]