我有一个hashmap,如此处所示;
HashMap<ArrayList<Integer>,ArrayList<String>>
我想从第二个ArrayList(值)中找到长度最大()的ArrayList
最有效的方法是什么?
答案 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的长度作为附加索引,然后可以随时非常有效地选择最后一个。