我正在寻找最无痛的方法来过滤集合.我在想类似的东西
Collection<?> foo = existingCollection.stream().filter( ... ). ...
Run Code Online (Sandbox Code Playgroud)
但我不确定如何最好从过滤器,返回或填充另一个集合.大多数例子似乎都像"在这里你可以打印".可能有一个我缺少的构造函数或输出方法.
鉴于我有一些函数需要两个参数并返回一个值,是否可以将Map转换为Stream中的List作为非终端操作?最近的I cam找到的是在地图上使用forEach来创建实例并将它们添加到预定义的List中,然后从该List开始一个新的Stream.还是我错过了什么?
例如:经典"在一些长词中找到3个最常出现的单词"
wordList.stream().collect(groupingBy(Function.identity, Collectors.counting))).
Run Code Online (Sandbox Code Playgroud)
(现在我想流式传输那个地图的entrySet)
sorted((a,b) -> a.getValue().compareTo(b.getValue))).limit(3).forEach(print...
Run Code Online (Sandbox Code Playgroud) 如何将转换Map<String, Double>到List<Pair<String, Double>>使用Java 8?
我写了这个实现,但效率不高
Map<String, Double> implicitDataSum = new ConcurrentHashMap<>();
//....
List<Pair<String, Double>> mostRelevantTitles = new ArrayList<>();
implicitDataSum.entrySet().stream().
.sorted(Comparator.comparing(e -> -e.getValue()))
.forEachOrdered(e -> mostRelevantTitles.add(new Pair<>(e.getKey(), e.getValue())));
return mostRelevantTitles;
Run Code Online (Sandbox Code Playgroud)
我知道它应该可以使用.collect(Collectors.someMethod()).但我不明白该怎么做.
我正在尝试将a转换Map<String, String>为List<String>使用lambdas.
基本上我想将键和值连接在一起'='.这似乎微不足道,但我找不到如何做到这一点.
例如
Map<String, String> map = new HashMap<>();
map.put("a1","b1");
map.put("a2","b2");
map.put("a3","b3");
// Lambda
// Result contains ["a1=b1", "a2=b2", "a3=b3"]
List<String> result;
Run Code Online (Sandbox Code Playgroud)