我有一个哈希映射
Map<Integer, List<String>> Directmap = new HashMap<Integer, List<String>>() {{
put(0, Arrays.asList(a, b));
put(1, Arrays.asList(b, c));
put(2, Arrays.asList(d));
put(3, Arrays.asList(d, e));
put(4, Arrays.asList(e));
put(5, Arrays.asList());
}};
Run Code Online (Sandbox Code Playgroud)
Directmap: {0=[a, b], 1=[b, c], 2=[d], 3=[d, e], 4=[e], 5=[]}
我想计算每个值的键数.例如:"a"有一个键,"b"有两个键,......,"e"有两个键,即3和4.
我试过这样的事情:
Map<Object, Long> ex = Directmap.entrySet().stream()
.collect(Collectors.groupingBy(e -> e.getKey(), Collectors.counting()));
Run Code Online (Sandbox Code Playgroud)
我希望带有键数的值作为输出.像这样 :
a=[1], b=[2], c=[1], d=[2], e=[2]
Run Code Online (Sandbox Code Playgroud) 我有一个LinkedHashMap.
sorted:{0=[1, 2], 5=[4, 3], 1=[2, 0, 3], 2=[4, 0, 1], 3=[4, 5, 1], 4=[5, 2, 3]}
Run Code Online (Sandbox Code Playgroud)
我尝试根据每个键的大小过滤每个键的值.例如,对于条目2=[4, 0, 1],我需要过滤值,使得键只应具有大小大于或等于(>=)的值
考虑一下2=[4, 1]:因为0只有两个元素,我们将其删除.4和1有三个元素,大小等于2,所以我们保留它.
最终输出应该是:
nodes_withHighDegreee :{0=[1, 2], 5=[4, 3], 1=[2, 3], 2=[4, 1], 3=[4, 1], 4=[2, 3]}
Run Code Online (Sandbox Code Playgroud)
我试过了 :
Map<Integer, List<Integer>> nodes_withHighDegree = sorted.entrySet().stream()
.peek(e -> e.getValue().filter((a,b)-> map.get(a).size() >= map.get(b).size()))
.collect(LinkedHashMap::new, (m, e) -> m.put(e.getKey(), e.getValue()), (m0, m1) -> m0.putAll(m1));
System.out.println("After sort" + nodes_withHighDegree);
Run Code Online (Sandbox Code Playgroud)
如何在这里使用过滤功能?
我有一个 df1 spark 数据框
id transactions
1 [1, 2, 3, 5]
2 [1, 2, 3, 6]
3 [1, 2, 9, 8]
4 [1, 2, 5, 6]
root
|-- id: int (nullable = true)
|-- transactions: array (nullable = false)
|-- element: int(containsNull = true)
None
Run Code Online (Sandbox Code Playgroud)
我有一个 df2 spark 数据框
items cost
[1] 1.0
[2] 1.0
[2, 1] 2.0
[6, 1] 2.0
root
|-- items: array (nullable = false)
|-- element: int (containsNull = true)
|-- cost: int (nullable = true) …Run Code Online (Sandbox Code Playgroud)