1.单列集合和数组可以直接调用stream()。
2.双列集合不能直接调用stream,可以转换成单列结合调用(keySet or entrySet)
**
Stream流的中间方法
**
1.中间方法返回新的Stream流,原来的Stream流只使用一次,建议使用链式编程。
2.修改Stream流中的数据,不会影响原来集合和数组中的数据。
filter 过滤
limit 获取前几个元素
skip 跳过前几个元素
distinct 元素去重 底层利用hashSet,依赖hashCode和equals方法
concat 合并a和b为一个流
map
ArrayList<String> arr = new ArrayList<>();
Collections.addAll(arr,"张无忌-12","周芷若-18","李四-88");
arr.stream().map(new Function<String, Integer>() {
@Override
public Integer apply(String s) {
String sAge = s.split("-")[1];
Integer age = Integer.valueOf(sAge);
return age;
}
}).forEach(a-> System.out.println(a));
arr.stream().map(s-> Integer.valueOf(s.split("-")[1])).forEach(a-> System.out.println(a));
**
Stream流的终结方法
**
void forEach() 遍历
long count() 统计
toArray() 收集流中的数据放到数组中
collect
String[] a = arr.stream().toArray(new IntFunction<String[]>() {
@Override
public String[] apply(int value) {
return new String[value];
}
});
String[] a = arr.stream().toArray(value->new String[value]);
ArrayList<String> arr = new ArrayList<>();
Collections.addAll(arr,"张无忌-男-12","周芷若-女-18","李四-男-88");
arr.stream().filter(s->s.split("-")[1].equals("男"))
.collect(Collectors.toMap(new Function<String, String>() {
@Override
public String apply(String s) {
return s.split("-")[0];
}
},
new Function<String, Integer>() {
@Override
public Integer apply(String s) {
return Integer.valueOf(s.split("-")[2]);
}
})
);
arr.stream().filter(s->s.split("-")[1].equals("男"))
.collect(Collectors.toMap(s->s.split("-")[0], s->Integer.valueOf(s.split("-")[2])));
**