Java 在Hashmap中查找最大值的最佳方法<;Arraylist,Arraylist>;
我有一个hashmap,如下所示Java 在Hashmap中查找最大值的最佳方法<;Arraylist,Arraylist>;,java,algorithm,data-structures,hashmap,Java,Algorithm,Data Structures,Hashmap,我有一个hashmap,如下所示 HashMap<ArrayList<Integer>,ArrayList<String>> HashMap 我想从第二个ArrayList(值)中找到长度最大的ArrayList() 最有效的方法是什么?您可以在地图上循环: arraylistmax=null; for(ArrayList:map.values()){ 如果(max==null | | list.size()>max.size()) max=列表; }
HashMap<ArrayList<Integer>,ArrayList<String>>
HashMap
我想从第二个ArrayList(值)中找到长度最大的ArrayList()
最有效的方法是什么?您可以在地图上循环:
arraylistmax=null;
for(ArrayList:map.values()){
如果(max==null | | list.size()>max.size())
max=列表;
}
要获取与最大值关联的键,请执行以下操作:
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;
}
}
ArrayList maxKey=null;
int maxLen=0;
对于(条目e:map.entrySet()){
int len=e.getValue().size();
如果(maxKey==null | | len>maxLen){
maxKey=e.getKey();
maxLen=len;
}
}
您可以在地图上循环:
arraylistmax=null;
for(ArrayList:map.values()){
如果(max==null | | list.size()>max.size())
max=列表;
}
要获取与最大值关联的键,请执行以下操作:
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;
}
}
ArrayList maxKey=null;
int maxLen=0;
对于(条目e:map.entrySet()){
int len=e.getValue().size();
如果(maxKey==null | | len>maxLen){
maxKey=e.getKey();
maxLen=len;
}
}
一旦ArrayList在HashMap中,您就必须枚举它们以找到长度最大的一个。但是,您可以使用SortedMap接口,其中键是每个数组列表的长度,作为附加索引,然后随时非常有效地选择最后一个。一旦ArrayList在HashMap中,您就必须枚举它们以找到长度最大的一个。但是,您可以使用SortedMap接口,其中键是每个数组列表的长度,作为附加索引,然后随时非常有效地选择最后一个。您必须迭代映射的入口集。如果对值ArrayList进行了排序,则只需查看最后一个元素。否则,您必须逐个检查每个元素。您必须迭代映射的入口集。如果对值ArrayList进行了排序,则只需查看最后一个元素。如果map.values()
中的最后一个ArrayList
为null
,则表示最长的元素为null
,即使其他元素可能具有实际大小。也许if语句应该说if(max!=null&&list.size()>max.size())
@wlyles如果其中一个值是null
,那么调用list.size()
时将有一个NPE。如果OP在映射中有空值(他真的不应该这样),那么他可以很容易地调整这种方法来检查它。但是,基本概念将保持不变。如果我们必须找到具有最大长度的ArrayList的键怎么办?@AKS您可以使用完全相同的方法,只需迭代keySet()
,而不是values()
@arshaji,看起来我的问题不清楚,我需要hashmap键,它的值是数组列表的最大长度。这意味着在HashMap中,若ArrayList的长度最大,那个么我需要相应的ArrayList。现在,迭代键集将为您提供长度最大的ArrayList,这不是我在这里的意图。如果map.values()
中的最后一个ArrayList
是null
,这将说明最长的一个是null
,即使其他东西可能具有实际大小。也许if语句应该说if(max!=null&&list.size()>max.size())
@wlyles如果其中一个值是null
,那么调用list.size()
时将有一个NPE。如果OP在映射中有空值(他真的不应该这样),那么他可以很容易地调整这种方法来检查它。但是,基本概念将保持不变。如果我们必须找到具有最大长度的ArrayList的键怎么办?@AKS您可以使用完全相同的方法,只需迭代keySet()
,而不是values()
@arshaji,看起来我的问题不清楚,我需要hashmap键,它的值是数组列表的最大长度。这意味着在HashMap中,若ArrayList的长度最大,那个么我需要相应的ArrayList。现在,在keyset上迭代将得到最大长度的ArrayList,这不是我在这里的意图。