Java8 stream相关使用笔记

Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)

API操作

1. filter 筛选,按照一定的规则校验流中的元素,将符合条件的元素提取到新的流中

    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("meta_data1111");
        list.add("meta_data222");
        list.add("meta_data333");
        list.add("meta_data444");
        list.add("meta_data555");
        list.add("666meta_data");
        list.add("instance_data111");
        list.add("instance_data222");
        list.add("instance_data333");
        list.add("instance_data444");
        list.add("5555instance_data");

        // 用filter可以对list进行过滤
        List<String> meta_data = list.stream()
.filter(o -> o.contains("meta_data")).collect(Collectors.toList());
        System.out.println(meta_data);
        List<String> instance_data = list.stream()
.filter(o -> o.contains("instance_data")).collect(Collectors.toList());
        System.out.println(instance_data);
    }
[meta_data1111, meta_data222, meta_data333, meta_data444, meta_data555, 666meta_data]
[instance_data111, instance_data222, instance_data333, instance_data444, 5555instance_data]

2. sorted 排序,默认是按照字符串升序进行排序。

List<String> meta_data = list.stream()
.filter(o -> o.contains("meta_data"))
.sorted()
.collect(Collectors.toList());

List<String> instance_data = list.stream()
.filter(o -> o.contains("instance_data"))
.sorted()
.collect(Collectors.toList());

3、映射map 就是将集合中的A元素转换成想要的B元素

Map<String, String> map = new HashMap<>();
map.put("123", null);
map.put("1231", null);
map.put("1232", null);
map.put("1233", null);

List<String> collect = new ArrayList<>(map.keySet());
List<String> collect1 = collect.stream().map(o -> "'" + o + "'")
    .collect(Collectors.toList());

System.out.println(collect); // [123, 1233, 1232, 1231]
System.out.println(collect1); // ['123', '1233', '1232', '1231']
public class Test {
    public static void main(String[] args) {
        List<DogTest> list = new ArrayList<>();
        list.add(new DogTest("zhangsan",11));
        list.add(new DogTest("lisi",11));
        list.add(new DogTest("wangwu",12));
        list.add(new DogTest(null,12));

        System.out.println(list);
        List<DogTest> collect = list.stream().map(Test::reName).collect(Collectors.toList());
        System.out.println(collect);
    }

    private static DogTest reName(DogTest dog) {
        if (dog.getName() == null || dog.getName().equals("zhangsan")) {
            dog.setName("zhangsan_111");
        }
        if (dog.getName().equals("lisi")) {
            dog.setName("lisi_111");
        }
        return dog;
    }
}

class DogTest {
    public DogTest(String name) {
        this.name = name;
    }

    public DogTest(String name, int age) {
        this.name = name;
        this.age = age;
    }

    private String name;
    private int age;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "DogTest{" + "name='" + name + '\'' + ", age=" + age + '}';
    }
}

----------------
[DogTest{name='zhangsan', age=11}, DogTest{name='lisi', age=11}, DogTest{name='wangwu', age=12}, DogTest{name='null', age=12}]
[DogTest{name='zhangsan_111', age=11}, DogTest{name='lisi_111', age=11}, DogTest{name='wangwu', age=12}, DogTest{name='zhangsan_111', age=12}]

后续有用到在补充

参考

【Java 8系列】Stream详解,看这一篇就够啦_善良勤劳勇敢而又聪明的老杨的博客-CSDN博客_java stream

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值