如何在Java中执行(sql)组

时间:2012-10-14 10:02:44

标签: java algorithm collections

我有一个文本文件,如下所示:

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

我想根据看起来最多的代码进行排序。正如您所看到的(并且因为我想要执行分组),存在重复的代码,因此使用 HashMap 会出现问题(重复键)。有什么想法吗?

4 个答案:

答案 0 :(得分:0)

您可以使用

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

外观将存储在与每个代码关联的列表中。 然后给出一个代码,你只需检索整数列表并迭代它。

答案 1 :(得分:0)

您需要一个Pair对象的集合。每对保存代码和外观。然后,您使用比较器对集合进行排序,该比较器仅比较每个Pair对象中的外观,并忽略代码。

答案 2 :(得分:0)

不知道这是否是最佳解决方案,但您可以创建一个列表的地图,如下所示:

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);
}

如果地图键是代码,则外观值将进入列表。

注意:要确定哪些代码具有更多外观,只需检查每个代码列表的大小。

答案 3 :(得分:0)

Commons Collections MultiValueMap可用于装饰另一个地图,允许它有一个以上的值。