英文:
Sorting and storing number in hashmap
问题
我需要在以下情况下寻求您的帮助。
我会在列表中拥有从1到100,000的任意数字。我需要将这些数字分成10组。1-10000的数字应该位于哈希映射的第一组中,以此类推处理其他组。
我的最终映射应如下所示:
键 1 = 1-10000 值 8990
键 2 = 10001-20000 值 12000
...
键 10 = 90000-100000 值 95001
可以通过使用if循环来检查每个10000,并将其存储在相应的键中来实现。但是否有其他方法来做到这一点?是否有已经执行此操作的实用函数?
英文:
I need your help in the below scenario.
I would be having any number from 1 to 100000 in a list. I need to split those numbers it into 10 groups. Numbers from 1 - 10000 should lie into group 1 in hashmap .. similarly for remaining groups.
My final Map should be like this
Key 1= 1-10000 Value 8990
Key 2 = 10001-20000 value 12000
....
Key 10 = 90000-100000 value 95001
It can be done via if loop to check for every 10000 and store it in corresponding key. But do we have any other way to do it? Any util function which already does it?
答案1
得分: 1
你可以使用流(Stream)API中的函数 collect()
将 int
值的列表/流转换为所需的 Map<>
。在这种情况下,您可以使用 Collectors.groupingBy()
收集器,并将 (i-1)/10000+1
指定为键。这样,值将根据 i
除以 10000 的余数被放入列表中。代码可能如下所示:
List<Integer> values = Arrays.asList(1, 10, 100, 1000, 10000,
10001, 20000, 8990, 12000, 95001,
90000, 90001, 100000);
Map<Integer, List<Integer>> mapping = values
.stream()
.collect(Collectors.groupingBy(i -> (i-1)/10000+1));
System.out.println(mapping);
这将生成以下输出:
{1=[1, 10, 100, 1000, 10000, 8990],
2=[10001, 20000, 12000],
9=[90000],
10=[95001, 90001, 100000]}
英文:
You can use the stream API function collect()
to convert the list/stream of int
values to a Map<>
you want. In this case you use the Collectors.groupingBy()
collector and specify (i-1)/10000+1
as the key. This way the values will put in lists based on the remainder of i
divided by 10000. The code might look like this:
List<Integer> values = Arrays.asList(1, 10, 100, 1000, 10000,
10001, 20000, 8990, 12000, 95001,
90000, 90001, 100000);
Map<Integer, List<Integer>> mapping = values
.stream()
.collect(Collectors.groupingBy(i -> (i-1)/10000+1));
System.out.println(mapping);
This will generate the following output:
{1=[1, 10, 100, 1000, 10000, 8990],
2=[10001, 20000, 12000],
9=[90000],
10=[95001, 90001, 100000]}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论