栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Stream流

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Stream流

获取流的方法

Stream是java8新加的流接口
获取流的方法:
1、所有的Collection集合都可以通过stream默认方法获取流
2、Stream接口的静态方法of可以获取数组对应的流

1、Collection中的方法 stream()

//list--->stream
ArrayList list = new ArrayList<>();
Stream stream = list.stream();

//set--->stream
HashSet set = new HashSet<>();
Stream stream1 = set.stream();

//map--->stream
HashMap map = new HashMap<>();
Set keys = map.keySet();
Stream stream2 = keys.stream();//key的stream

Collection values = map.values();//value的值是非唯一的,所以用的是Collection
Stream stream3 = values.stream();//values的stream

2、Stream静态方法
静态方法只能接口自己调用,子类都不用调用

Stream stream =Stream.of("a","b","c");//of(可变参数),所以可以写多个参数
Stream的方法

1、终结方法:返回值类型不再是stream接口自身类型的方法,终结方法只能调用一次
比如:count forEach
2、非终结方法:返回类型选仍旧是Stream接口自身类型的方法,非终结方法可以多次调用
filter limit skip concat

常用方法:
1、forEach:逐一处理
该方法并不保证元素的逐一消费动作在流中被有序执行
forEach(Consumer action)

        stream.forEach((String s)->{
            System.out.println(s);
        });

2、count:统计个数

long count=stream.count();
System.out.println(count);

3、skip:跳过前几个
skip(long n)

Stream stream =Stream.of("张三","李四","王五");
stream.skip(2).forEach((String s)-> System.out.println(s));//跳过前2个,返回王五

4、limit:取用前几个
limit(long maxSize)

 Stream stream =Stream.of("张三","李四","王五");
 stream.limit(2).forEach((String s)-> System.out.println(s));//取前两个,返回张三 李四

5、filter:过滤
filter(Predicate predicate)

Stream stream =Stream.of("张三","李四","王五","张六");
Stream stringStream = stream.filter((String s) -> {
    return s.contains("张"); //过滤出包含”张“字的名字,所以返回张三 张六
});
stringStream.forEach(s -> System.out.println(s));

6、distinct:去重

stream.distinct().forEach(s-> System.out.println(s));

7、map:映射
map(Function mapper)

Stream stream =Stream.of("10","20","30","40");
Stream integerStream=stream.map((String s)->{
    return Integer.parseInt(s);
});
integerStream.forEach((Integer i)-> {
    System.out.println(i);
}); //打印 10 20 30 40
Stream stream =Stream.of("张三","李四","王五");
Stream personStream = stream.map((String name)->{
    return new Person(name);
});

8、concat:合并
concat(Stream a,Stream b)将stream对象a和b合并为一个新的stream流对象

Stream< String> stream1 =Stream.of("aa","bb","cc");
Stream< String> stream2 =Stream.of("张三","李四","王五");
Stream< String> stringStream = Stream.concat(stream1,stream2); //将两个对象合并起来
Stream流转化为集合或者数组

1、转化为List集合
2、转化为数组

Stream stream =Stream.of("aa","bb","cc");
//stream---->List
List list=stream.collect(Collectors.toList());
System.out.println(list);
//stream--->Set
Set set = stream.collect(Collectors.toSet());
System.out.println(set);

//stream--->ArrayList,toCollection 单独某一个集合
ArrayList arrayList = stream.collect(Collectors.toCollection(ArrayList::new));
//stream--->HashSet,toCollection 单独某一个集合
HashSet hashSet = stream.collect(Collectors.toCollection(HashSet::new));

//stream--->object[]数组
Object[] objects = stream.toArray();

//stream--->String[]
String[] strings=stream.toArray(String[]::new);
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/319066.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号