Ⅰ.介绍
题外话,又有一个月未写一点东西了,博客都要长草了😂。
Stream,流的意思。为处理数据集合而生的工具,对集合中的元素进行筛选、排序、聚合、变换,最终获得需要的结果。
Ⅱ.详细简介
1.分组
先介绍一下stream的集合分组吧,今天主要想写这个。
public static void main(String[] args) {
//new一个集合
List
2.筛选
集合的筛选也是常规操作了。目的是为了留下需要的元素,剔除不需要的。
public static void main(String[] args) {
//生成一个集合
List list = Arrays.asList("1,2,3,4,5,6,7,2".split(","));
//distinct()是为了排重
list.stream().distinct().forEach(System.out::print);
System.out.println();
//输出1234567
//skip()是跳过前面的几个元素
list.stream().skip(3).forEach(System.out::print);
System.out.println();
//输出45672
//filter() 对元素进行判断 返回boolean来判断是否从流中剔除掉
list.stream().filter(string->!string.equals("2")).forEach(System.out::print);
//输出134567
}
除此之外,还有limit()方法是为了限制输出前几个元素。
3.排序
虽然List已经有排序方法sort()了,但我要讲的这个排序是stream流里面的sorted()。
public static void main(String[] args) {
//生成一个集合
List list = new ArrayList(){{
add(5);
add(1);
add(3);
add(2);
}};
List> mapList = new ArrayList>(){{
add(new LinkedHashMap(){{
put("name","jack");
put("age","22");
put("gender","male");
put("class","two");
}});
add(new LinkedHashMap(){{
put("name","rose");
put("age","21");
put("gender","female");
put("class","two");
}});
add(new LinkedHashMap(){{
put("name","jack");
put("age","20");
put("gender","male");
put("class","one");
}});
add(new LinkedHashMap(){{
put("name","rose");
put("age","18");
put("gender","female");
put("class","one");
}});
}};
//自然排序
list.stream().sorted().forEach(System.out::print);
System.out.println();
//输出1235
//根据name和age递增排序
mapList.stream()
.sorted(Comparator.comparing(a->a.get("name").toString()+a.get("age")))
.forEach(System.out::print);
//输出{name=jack, age=20, gender=male, class=one}{name=jack, age=22, gender=male, class=two}
// {name=rose, age=18, gender=female, class=one}{name=rose, age=21, gender=female, class=two}
}
Comparator接口除了comparing()方法外,还有thenComparing()方法是进一步的排序,reversed()方法是为了反转排序。
4.映射变换
Stream的map()方法是转换集合里面的元素到另一种类型或者形态。
public static void main(String[] args) {
List
还有mapToDouble()、mapToInt()、mapToLong()方法进行映射,只不过对返回的类型都做了限定。
5.其它
还有一些其它的方法,allMatch()就是如果全匹配就返回true,anyMatch()只要有匹配的就返回true,flatMap()是为了把流中的集合转换成一个流,如Stream<List
Ⅲ.总结
Stream的使用大大的提高了集合操作的开发效率。现在暂时就草草的总结一波吧,等有了更深的了解再详细讲解吧😀。
Comments | NOTHING