Java 8之Stream的简单应用

尽管java 8已经出现很久了,但很可惜最近才真正的使用它,特别是其提供的新特性Stream,真的特别强大,也很方便。在网上看了一些资料,发现都讲的特别多,特别泛,很官方。所以就想写一篇十分简单易懂的应用场景。

操作对象

首先提供一个测试用的操作对象CodeItem

public class CodeItem {
    private String code;
    private String name;

    public CodeItem(String code, String name) {
        this.code = code;
        this.name = name;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getName() {
        return name;
    }

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

现有一个CodeItem列表,需要把其中的code属性单独组成一个列表,特别在很多应用中经常需要将对象列表的ID抽出来。

Stream forEach方法
List<CodeItem> codeItems = Arrays.asList(
        new CodeItem("3","c"),
        new CodeItem("4","d"),
        new CodeItem("5","e"));
List<String> codes = new ArrayList<>();
codeItems.stream().forEach(x->{
        codes.add(codeItem .getCode());
});
Stream map 方法
List<CodeItem> codeItems = Arrays.asList(
        new CodeItem("1","a"),
        new CodeItem("3","c"),
        new CodeItem("4","d"),
        new CodeItem("5","e"));
List<String> codes = codeItems.stream().map(codeItem -> codeItem.getCode()).collect(Collectors.toList());
场景二

现有一个CodeItem列表,需要把其中的name属性等于**的对象过滤出一个列表。

Stream filter方法
List<CodeItem> codeItems = codeItems.stream().filter(codeItem -> codeItem.getCode().equals("4")||codeItem.getCode().equals("5")).collect(Collectors.toList());
场景三

现有一个String列表,要获得以某分隔符分隔的字符串,如果字符串列表是[1,2,3],则得到的字符串是”1,2,3”

Stream filter方法
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
System.out.println(list.stream().map(item -> item).collect(Collectors.joining(",")));

当然Stream的应用远远不止这么多,在这里只是简单的分享最常用的3种方法,上面的三种方法还可以进行组合,大家可以自己研究一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值