0
点赞
收藏
分享

微信扫一扫

java中stream流的使用方法举例


import java.util.ArrayList;
import java.util.Collections;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

public class Main {
public static void main(String[] args) {

ArrayList<String> list = new ArrayList<>();
Collections.addAll(list,"111,1","222,2","333,3","444,4","555,5","666,6");

Map<String, Integer> collect = list.stream()
.filter(s -> Integer.parseInt(s.split(",")[1]) > 4)
.map((String s) -> Integer.parseInt(s.split(",")[1]))
.collect(Collectors.toMap(integer->String.valueOf(integer), integer->integer));
System.out.println(collect);

}
}

一、实例解析

1、首先定义一个list列表,然后添加​​"111,1","222,2","333,3","444,4","555,5","666,6"​​​元素。
2、使用list的stream流对数据进行处理。
3、filter的作用为过滤,​​​.filter(s -> Integer.parseInt(s.split(",")[1]) > 4)​​为lambda表达式,原型为

list.stream().filter(new Predicate<String>() {
@Override
public boolean test(String s) {
return Integer.parseInt(s.split(",")[1]) > 4;
}
});

就是将list中的每个元素以逗号分隔,然后将第二个数据转换为int类型后将大于4的元素过滤出来。
4、map的左右主要是执行一些处理​​​.map((String s) -> Integer.parseInt(s.split(",")[1]))​​此处为lambda表达式,原型为:

list.stream().map(new Function<String, Integer>() {
@Override
public Integer apply(String s) {
return Integer.parseInt(s.split(",")[1]);
}
});

就是将前面过滤后的元素以逗号分隔,然后将第二个元素转换为int型。
5、collect的左右为收集器,主要作用是收集元素,​​​.collect(Collectors.toMap(integer->String.valueOf(integer), integer->integer));​​主要作用是将过滤、转换后的元素用map收集起来,也可以用list和set。原型为:

list.stream().collect(Collectors.toMap(new Function<Integer, String>() {
@Override
public String apply(Integer integer) {
return String.valueOf(integer);
}
}, new Function<Integer, Integer>() {
@Override
public Integer apply(Integer integer) {
return integer;
}
}));

二、结果输出

{5=5, 6=6}


举报

相关推荐

0 条评论