[英]Sorting and storing number in hashmap
在下面的場景中,我需要你的幫助。
我會在列表中包含 1 到 100000 之間的任何數字。 我需要將這些數字分成 10 組。 1 - 10000 之間的數字應該位於 hashmap 中的第 1 組中……對於其余組也是如此。
我的最終地圖應該是這樣的
Key 1= 1-10000 Value 8990
Key 2 = 10001-20000 value 12000
....
Key 10 = 90000-100000 value 95001
可以通過 if 循環檢查每 10000 個並將其存儲在相應的鍵中。 但是我們還有其他方法可以做到嗎? 任何已經這樣做的 util 函數?
您可以使用流 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]}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.