java集合流操作

1、 获取stream

和spark的rdd编程极其相似

List<Integer> list = new ArrayList<>();
LinkedList<Object> llist = new LinkedList<>();
HashSet<Object> set = new HashSet<>();
LinkedHashSet<Object> linkeset = new LinkedHashSet<>();
TreeSet<Object> tset = new TreeSet<>();        // stream创建
int[] arr = {1, 2, 3, 4, 5};
        Arrays.stream(arr);
		Stream.of(list);
        Stream.of(llist);
        Stream.of(set);
        Stream.of(linkeset);
        Stream.of(tset);
        //集合创建
        list.stream();
        llist.stream();
        set.stream();
        linkeset.stream();
        tset.stream();

2、中间方法

filter()		# 过滤
limit()			#获取前几个元素
skip()			#跳过前几个元素
distinct()		#去重
concat()		#合并
map()			#转换

例子:

List<Integer> list = new ArrayList<>();
Collections.addAll(list,1,2,3,4,4,5,5);

list.stream().filter(i -> (int)i > 2).forEach(i -> System.out.println(i));

list.stream().filter(i -> (int)i > 2).forEach(i -> System.out.print(i));

list.stream().limit(2).forEach(i -> System.out.println(i));

list.stream().skip(2).forEach(i -> System.out.println(i)); 

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

list.stream().map(i->i*10).forEach(i -> System.out.println(i));

3、最终方法

forEach()							//遍历
count()								//统计
reduce()							//聚合
toArray()							//转换为数组
collect()							//收集到指定容器中

例子:

long count = list.stream().count();

list.forEach(x -> System.out.println(x));

List<Integer> collect = list.stream().map(i -> i * 10).collect(Collectors.toList());

Integer sum = list.stream().reduce(0, (a, b) -> a + b);

Integer[] arrlist = list.stream().toArray(len -> new Integer[len]);

4、方法引用

写lambda表达式的地方可以使用方法引用
引用方法需求和当前需求一致

引用静态方法:类名::方法名
引用成员方法:对象::方法名
引用本类方法:this::方法
引用父类方法:super::方法
引用构造方法:类名::new

Integer reduce = list.stream().reduce(0, Integer::sum);
List<String> list = new ArrayList<>();
Collections.addAll(list,"1","2","3","4","4","5","5");
list.stream().map(Integer::parseInt)
.filter(x->x%2==0).forEach(x-> System.out.println(x));
  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值