找到Hashmap中最大值的最佳方法<arraylist,arraylist> </arraylist,arraylist>

时间:2013-08-05 19:03:28

标签: java algorithm data-structures hashmap

我有一个hashmap,如此处所示;

HashMap<ArrayList<Integer>,ArrayList<String>>

我想从第二个ArrayList(值)中找到长度最大()的ArrayList

最有效的方法是什么?

2 个答案:

答案 0 :(得分:3)

您可以遍历地图values()

ArrayList<String> max = null;

for (ArrayList<String> list : map.values()) {
    if (max == null || list.size() > max.size())
        max = list;
}

获取与最大值关联的密钥:

ArrayList<Integer> maxKey = null;
int maxLen = 0;

for (Entry<ArrayList<Integer>, ArrayList<String>> e : map.entrySet()) {
    int len = e.getValue().size();

    if (maxKey == null || len > maxLen) {
        maxKey = e.getKey();
        maxLen = len;
    }
}

答案 1 :(得分:0)

一旦ArrayLists在HashMap中,你就必须枚举它们以找到长度最大的那个。但是,您可以使用SortedMap接口,其中键是每个Array List的长度作为附加索引,然后可以随时非常有效地选择最后一个。