美文网首页
Stream代码的一个范例

Stream代码的一个范例

作者: 怕水河马 | 来源:发表于2019-07-17 13:40 被阅读0次

写Stream也有一段时间了,这段是一个典型代码,记录一下


public ConcurrentMap>listSpecfiedPath(String path) {

return Arrays.asList(path.split(","))

.parallelStream()

.map(s -> {

NodePath nodePath =new NodePath();

                nodePath.setOriginPath(s);

                String finalPath =START_PATH.endsWith("/") ?START_PATH + s :START_PATH +"/" + s;

                //有环境变量,优先读取环境变量路径,否则读取当前路径

                boolean b =zkClient.exists(finalPath +"/" +profile);

                if (!b) {

b =zkClient.exists(finalPath);

                }else {

nodePath.setFinalPath(finalPath +"/" +profile);

                    return nodePath;

                }

if (!b) {

nodePath.setFinalPath(null);

                }else {

nodePath.setFinalPath(finalPath);

                }

return nodePath;

            })

.filter(s -> s.getFinalPath() !=null)

.flatMap((Function>>) s -> {

//获取节点下的子节点list

//不包含存在子节点的节点

                List children =zkClient.getChildren(s.getFinalPath());

                return children.parallelStream().filter(

childPath ->zkClient.countChildren(s.getFinalPath() +"/" + childPath) ==0)

.map(

childPath -> {

PropertyPath propertyPath =new PropertyPath();

                                    propertyPath.setFullPath(s.getFinalPath() +"/" + childPath);

                                    propertyPath.setPropertyPath(childPath);

                                    return new AbstractMap.SimpleEntry<>(s, propertyPath);

                                });

            })

.map((Function, Map.Entry>>)

stringStringEntry -> {

String value =zkClient.readData(stringStringEntry.getValue().getFullPath());

                        return new AbstractMap.SimpleEntry<>(

stringStringEntry.getKey(),

                                new AbstractMap.SimpleEntry<>(stringStringEntry.getValue(), value)

);

                    })

.filter(stringEntryEntry -> StringUtils.isNotBlank(stringEntryEntry.getValue().getValue()))

.map((Function>, Map.Entry>>) stringEntryEntry ->new AbstractMap.SimpleEntry<>(

stringEntryEntry.getKey(),

                    new AbstractMap.SimpleEntry<>(

stringEntryEntry.getValue().getKey().getPropertyPath(),

                            stringEntryEntry.getValue().getValue())))

.collect(Collectors.toConcurrentMap(

stringEntryEntry -> stringEntryEntry.getKey(),

                    stringEntryEntry -> {

ConcurrentHashMap retMap =new ConcurrentHashMap<>();

                        retMap.put(stringEntryEntry.getValue().getKey(), stringEntryEntry.getValue().getValue());

                        return retMap;

                    },

                    (stringStringConcurrentHashMap, stringStringConcurrentHashMap2) -> {

stringStringConcurrentHashMap.putAll(stringStringConcurrentHashMap2);

                        return stringStringConcurrentHashMap;

                    }));

}

说实话,会这么写,只是因为能简单帮我解决并发的问题,可读性……其实并不算好

相关文章

  • Stream代码的一个范例

    写Stream也有一段时间了,这段是一个典型代码,记录一下 说实话,会这么写,只是因为能简单帮我解决并发的问题,可...

  • String类中其它的方法

    其它方法 范例:代码演示 代码结果

  • Retrofit图片上传

    1、接口范例: 2、代码示例:

  • Java8 Two---- Streams

    1 collections VS stream collections 编写代码将会更加的复杂冗余, stream...

  • CSS垂直居中

    垂直居中有几种实现方式,给出代码范例 1 文本居中 padding 范例链接:https://output.js...

  • Java流操作总结

    Java流(Stream)操作自Java 8引入,通过Stream操作可以简化代码编写,提高代码执行效率。流整体操...

  • Stream

    使用 Stream API 高逼格 优化 Java 代码 Java8 Stream流中的 collect() 别再...

  • join

    join 操作 window join 方式 代码形式 相当于sql中的stream1 join stream2 ...

  • Java8函数式编程:3.10进阶练习:map和filter实现

    只用reduce 和Lambda 表达式写出实现Stream 上的map 操作的代码,如果不想返回Stream,可...

  • Java Stream 源码分析

    前言 Java 8 的 Stream 使得代码更加简洁易懂,本篇文章深入分析 Java Stream 的工作原理,...

网友评论

      本文标题:Stream代码的一个范例

      本文链接:https://www.haomeiwen.com/subject/zdeqlctx.html