目录
前言
平时工作中对于集合操作用到最多的就是stream流了,这里整理一下关于stream流的常见用法集合。
1. forEach遍历
void forEach(Consumer<? super T> action):用来遍历stream流中的数据。
public static void main(String[] args) {
//获取一个Stream流
List<String> list = Arrays.asList("abc", "bcdm","rfcjg","xvhcnr","bcsrttk");
// 输出集合中元素的长度值:3,4,5,6,7
list.stream().mapToInt(str -> str.length()).forEach(System.out::println);
//使用Stream流的方法forEach对stream流中的数据遍历
list.forEach((String name) -> {
System.out.println(name);
});
}
2. filter过滤
Stream<T> filter(Predicate<? super T> predicate):用于对Stream流中的数据进行过滤。
public static void main(String[] args) {
Stream<String> streamTest = Stream.of("zhangshab", "lisi","lisi","lisi", "xiaobai","zhanxihua","zhoushengsheng");
Stream<String> stream1 = streamTest.filter((String name) -> {
return name.startsWith("zhan");
});
/* int sum = widgets.stream()
.filter(w -> w.getColor() == RED)
.mapToInt(w -> w.getWeight())
.sum(); */
//输出strem1
stream1.forEach((name)-> System.out.println(name));
//多条件过滤
List<String> stream2 = streamTest.filter((String name) -> {
if(name.length()>=3 && name.equals("zhanxihua")){
return true;
}
return false;
}).collect(Collectors.toList());
//输出strem2
System.out.println(stream2);
}
3. limit截取
Stream<T> limit(long maxSize): 用于截取流中的元素,对集合元素最大数量进行限制,截取的参数长度不能大于集合长度,否则不进行操作。
public static void main(String[] args) {
Stream<String> streamTest = Stream.of("zhangshab", "lisi", "xiaobai","zhanxihua","zhoushengsheng");
/* streamTest.forEach((String name) -> {
System.out.println(name);
});*/
// 截取前2个元素
List<String> list = streamTest.limit(2).collect(Collectors.toList());
// 输出
System.out.println(list);
}
4. skip跳过
Stream<T> skip(long n) : 对集合元素进行跳过,如果流的当前长度大于n,则跳过前n个,否则将会得到一个长度为0的空流 。
public static void main(String[] args) {
Stream<String> streamTest = Stream.of("zhangshab","zhoudafu", "lisi", "xiaobai","zhanxihua","zhoushengsheng");
//跳过前2个元素
List<String> list = streamTest.distinct().skip(2).collect(Collectors.toList());
System.out.println(list);
}
5. distinct去重
Stream<T> distinct(): 对集合元素进行去重,返回新的Stream.
public static void main(String[] args) {
Stream<String> streamTest = Stream.of("zhangshab","zhoudafu", "lisi","lisi","lisi", "xiaobai","zhanxihua","zhoushengsheng");
//去重
List<String> list = streamTest.distinct().collect(Collectors.toList());
System.out.println(list);
}</