我是函数式编程新手,我正在努力变得更好。
目前,我正在试验一些代码,采用以下基本形式:
private static int myMethod(List<Integer> input){
Map<Integer,Long> freq = input
.stream()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
return (int) freq
.keySet()
.stream()
.filter(key-> freq.containsKey(freq.get(key)))
.count();
}
首先,使用hashmap获取列表中每个数字的频率。下一步,我们总结出地图中作为键存在的键的数量。
我不喜欢的是,这两个流需要彼此分开存在,其中一个HashMap是由一个流生成的,只会被另一个流立即独占地使用。
有没有一种方法可以将其合并为一个流?我是这样想的:
private static int myMethod(List<Integer> input){
return (int) input
.stream()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
.keySet()
.stream()
.filter(key-> freq.containsKey(freq.get(key)))
.count();
}
但这里的问题是没有可参考的freq map,因为它被用作管道的一部分,所以过滤器无法完成它需要做的事情。
总之,我不喜欢这样的情况,即只收集到hashmap,然后再转换回密钥集。有没有一种方法可以“简化”(双关语)这个操作来
非常感谢。
键集实际上是由输入
组成的哈希集
。因此,您应该使用临时存储,以便:
Set<Integer> freq = new HashSet<>(input);
并进一步计数,根据单个流管道中的值进行筛选
return (int) input
.stream()
.collect(Collectors.groupingBy(Function.identity(),
Collectors.counting()))
.values() // just using the frequencies evaluated
.stream()
.filter(count -> freq.contains(count.intValue()))
.count();
我的做法是创建一个反应endpoint,如下所示: 这会在数据可用时立即将其发回前端,然而,我的第二个用例是在数据到达时将其汇集到一个单独的集合中,这样,如果以后有类似的请求到达,我就可以从池中卸载整个数据,而不必再次访问服务。 在不关闭流量流的情况下,我有什么选择来访问流量并在它们到达时将值存储到集合中? 遇到异常: java.lang.IllegalStateException:stream已
问题内容: 这不是我第一次遇到这个问题,而且确实困扰着我。每当使用Python模块打开管道时,只能使用一次,如文档所示: 这里的问题是Python第二次不满意。实际上,他决定在第一次交流后关闭该文件: 是否允许多种通讯? 问题答案: 我认为您误会了沟通… http://docs.python.org/library/subprocess.html#subprocess.Popen.communic
我有一个独特的设置,需要能够动态加载位于我正在构建的src之外的Jenkinsfiles。JenkinsFile本身通常调用node(),然后调用一些构建步骤。这会导致不必要地消耗多个执行器,因为我需要已经调用node(),以便使用加载步骤来运行Jenkinsfile,或者如果我将Jenkinsfile读取为字符串并执行它,则执行groovy。 我今天在工作UI中拥有的内容: 加载的Jenkins
我一直在玩流,然后我注意到当我执行以下操作时,它不会在控制台中产生输出: 我认为这是因为是一个非终止流方法,应该使用而不是来终止流并生成结果: 然而,是否有一种方法可以‘提前’终止流,使用一个自定义的终止方法(函数接口),它除了终止流之外什么都不做?..有没有一个适当的方法来利用Java现有的东西来做到这一点? 我知道我可以这样做: 但那感觉很浪费。
当我在Jenkins从属上运行以下代码段时,它可以工作。但是当它在没有BASH的docker容器中执行时,就不会设置“$test”。 https://jenkins.io/doc/pipeline/steps/workflow-basic-steps/#code-withenv-code-set-environment-variables