Java 8之Stream的简单应用

来源:互联网 发布:js 函数使用new的区别 编辑:程序博客网 时间:2024/05/21 09:49

尽管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