在值中对基于HashMap的整数数组进行排序

时间:2018-07-16 22:33:59

标签: java hashmap

我想基于整数数组中的第二个元素对HashMap进行排序。

示例:考虑我有一个如下的哈希图 <“ Alex”,[12,18]>

<“鲍勃”,[13,45]>

<“球”,[13,45]>

<“糖果”,[1,2]>

则输出应为: 鲍勃·亚历克斯·鲍勃(Alex Bob)

我们可以使用Lambda函数吗?

1 个答案:

答案 0 :(得分:0)

假设1:int数组已经排序。

在Java中使用Lambda的

HashMap<String, int[]> map = new HashMap<>();

    map.put("Alex", new int[] {12,18});
    map.put("Bob", new int[] {13,45});
    map.put("Ball", new int[] {13,45});
    map.put("Candy", new int[] {1,2});

    Map<String, int[]> result = map.entrySet().stream()
            .sorted(Map.Entry.comparingByValue((int[] a, int[] b) ->
                    IntStream.of(b).sum() - IntStream.of(a).sum())
            )
            .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
                    (oldValue, newValue) -> oldValue, LinkedHashMap::new));

    System.out.println(result);

奖金-在Groovy中:

HashMap<String, List> map = new HashMap<String, List>()

map.put("Alex", [12,18])
map.put("Bob", [13,45])
map.put("Ball", [13,45])
map.put("Candy", [1,2])

println map.sort {a,b -> b.value.sum() <=> a.value.sum()}