前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java Lamada

Java Lamada

作者头像
WindWant
发布2020-09-11 15:08:49
2860
发布2020-09-11 15:08:49
举报
文章被收录于专栏:后端码事

Collection

->stream:返回一个以 colleciotn 元素为数据源的数据流。

-->map: 入参 Function 对象,将此流中的元素依次作用于传入的 Function,然后返回新的数据流。

示例:

代码语言:javascript
复制
List<String> list = new ArrayList<>();
        list.add("1");
        list.add("10");
        list.add("100");
        List<Integer> ilist = list
                .stream() //流对象
                .map(Integer::valueOf) //对元素应用 Integer.valueOf 函数,String 转换为 Integer 
                .collect(Collectors.toList());

输出:[1, 10, 100]

--peak: 入参 Function 对象,无返回值(void 函数),将此流中的元素依次作用于传入的 Function,然后返回新的数据流

代码语言:javascript
复制
class TOBJ {
            String ele;

            public String getEle() {
                return ele;
            }

            public void setEle(String ele) {
                this.ele = ele;
            }

            TOBJ(String value) {
                this.ele = value;
            }

            @Override
            public String toString() {
                return "TOBJ{" +
                        "ele='" + ele + '\'' +
                        '}';
            }
        }
        List<TOBJ> list = new ArrayList<>();
        list.add(new TOBJ("a"));
        list.add(new TOBJ("b"));
        list.add(new TOBJ("c"));
        List<TOBJ> slist = list
                .stream() //流对象
                .peek(item -> item.setEle(item.getEle().toUpperCase()))
                .collect(Collectors.toList());

输出:[TOBJ{ele='A'}, TOBJ{ele='B'}, TOBJ{ele='C'}]

--flatMap: 入参 Function 对象,将此流中的元素依次作用于传入的 Function,产生每个对象的流,然后合并各元素的流返回新的数据流。流合并操作。

示例:

代码语言:javascript
复制
List<String> list = new ArrayList<>();
        list.add("1|2|3");
        list.add("10|2|30");
        list.add("1|200|300");
        List<Integer> ilist = list
                .stream() //流对象
                .map(item -> item .split("\\|")) //分割元素为数组
                .flatMap(Arrays::stream)
                .map(Integer::valueOf)
                .collect(Collectors.toList());

输出:[1, 2, 3, 10, 2, 30, 1, 200, 300]

-->distinct: 去重

代码语言:javascript
复制
 List<String> list = new ArrayList<>();
        list.add("1|2|3");
        list.add("10|2|30");
        list.add("1|200|300");
        List<Integer> ilist = list
                .stream() //流对象
                .map(item -> item .split("\\|")) //分割元素为数组
                .flatMap(Arrays::stream)
                .map(Integer::valueOf)
                .distinct()
                .collect(Collectors.toList());

输出:[1, 2, 3, 10, 30, 200, 300]

-->sorted:入参 Comparator,根据传入的Comparator排序。

代码语言:javascript
复制
class TOBJ {
            String ele;

            public String getEle() {
                return ele;
            }

            public void setEle(String ele) {
                this.ele = ele;
            }

            TOBJ(String value) {
                this.ele = value;
            }

            @Override
            public String toString() {
                return "TOBJ{" +
                        "ele='" + ele + '\'' +
                        '}';
            }
        }
        List<TOBJ> list = new ArrayList<>();
        list.add(new TOBJ("d"));
        list.add(new TOBJ("b"));
        list.add(new TOBJ("c"));
        List<TOBJ> slist = list
                .stream() //流对象
                .sorted(Comparator.comparing(TOBJ::getEle)) //根据 ele 元素排序
                .collect(Collectors.toList());

输出:[TOBJ{ele='b'}, TOBJ{ele='c'}, TOBJ{ele='d'}]

--reduce: 入参 BinaryOperator,对流元素做连续两两运算,最后返回与流元素相同类型结果:

代码语言:javascript
复制
List<Integer> ilist = new ArrayList(){{
            add(100);
            add(2);
            add(5);
            add(2);
        }};
        Optional<Integer> sum = ilist.stream().reduce(Integer::sum);

输出:Optional[109]

--> ... ...

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-02-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档