簡體   English   中英

如何在Java中按(SQL)執行分組

[英]How to perform a group by (sql) in Java

我有一個看起來像這樣的文本文件:

code    appearance
----------------
j4t8    1
fj89    3
pf6n    1
j4t8    5

我想按顯示最多的代碼進行排序。 如您所見(並且由於我要執行分組依據),所以有重復的代碼,因此使用HashMap將是一個問題(重復的鍵)。 有任何想法嗎?

您可以使用

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

外觀將存儲在與每個代碼關聯的列表中。 然后給定代碼,您只需檢索整數列表並對其進行迭代。

您需要成對對象的集合。 每對都有代碼和外觀。 然后,您可以使用比較器對集合進行排序,該比較器僅比較每個Pair對象中的外觀,而忽略代碼。

不知道這是否是最好的解決方案,但是您可以創建一個列表列表,如下所示:

Map<String, List<Integer>> map = new HahsMap<String, List<Integer>>();
if(map.contains.(key))
{
  map.get(key).add(new_appearance_value);
}
else
{
  List<Integer> app = new ArrayList<Integer>();
  app.add(new_appearance_value);
  map.put(key, app);
}

映射鍵將是代碼,外觀值將進入列表。

注意:要確定哪個代碼顯示更多,只需檢查每個代碼列表的大小即可。

Commons Collections MultiValueMap可用於裝飾另一張地圖,使其具有多個鍵值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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