我有一个这里显示的哈希图;
HashMap<ArrayList<Integer>,ArrayList<String>>
我想从第二个 ArrayList (值)中找到具有最大长度()的 ArrayList
最有效的方法是什么?
我有一个这里显示的哈希图;
HashMap<ArrayList<Integer>,ArrayList<String>>
我想从第二个 ArrayList (值)中找到具有最大长度()的 ArrayList
最有效的方法是什么?
您可以遍历地图的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;
}
}
一旦 ArrayLists 在 HashMap 中,您就必须枚举它们以找到具有最大长度的一个。但是,您可以使用 SortedMap 接口,其中键是每个数组列表的长度作为附加索引,然后随时非常有效地选择最后一个。