小编pri*_*iya的帖子

如何使用lambda获取哈希映射中值的键数

我有一个哈希映射

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)

java lambda hashmap java-8 java-stream

3
推荐指数
1
解决办法
1715
查看次数

如何使用peek()和filter()java8?

我有一个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)

如何在这里使用过滤功能?

java lambda hashmap java-8 java-stream

2
推荐指数
1
解决办法
564
查看次数

检查另一个数组pyspark中存在的数组的所有元素

我有一个 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)

apache-spark apache-spark-sql pyspark

1
推荐指数
1
解决办法
4304
查看次数