簡體   English   中英

在哈希圖中對數字進行排序和存儲

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM