gpt4 book ai didi

java - 如何按数字位数对列表中的数字进行分组

转载 作者:行者123 更新时间:2023-11-30 01:43:38 24 4
gpt4 key购买 nike

所以我的问题是我不知道如何对 Map<<Integer, List<Integer>> 进行排序按长度。

例如,您有列表 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407],

答案应为 {1=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 3=[153, 370, 371, 407]}

我编写了阿姆斯特朗数(armstrongs)的代码

    List<Integer> lance = armstrongs(500); 
System.out.println(lance);
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407]

Map<Integer, List<Integer>> grouped = groupByLength(lance);
System.out.println(grouped);
// {1=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 3=[153, 370, 371, 407]}

我的问题是,如何使用长度数字对列表进行排序?

我唯一拥有的是

public static Map<Integer, List<Integer>> groupByLength(List<Integer> x){
return null;
}

最佳答案

Java 的 Stream操作非常适合此类问题。特别是,方法groupingBy完全满足您的需要:它创建一个对象,将列表支持的流中的所有元素收集到映射分类器的映射中(在您的情况下是位数) 到按该分类器分组的元素列表。

public static Map<Integer, List<Integer>> groupByLength(List<Integer> x) {
return x.stream()
.collect(Collectors.groupingBy(n -> Integer.toString(n).length()));
}

关于java - 如何按数字位数对列表中的数字进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59018640/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com