0

我有一个这里显示的哈希图;

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

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

最有效的方法是什么?

4

2 回答 2

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;
    }
}
于 2013-08-05T19:05:32.430 回答
0

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

于 2013-08-05T19:08:12.947 回答