Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Hashmap中查找最大值的最佳方法<;Arraylist,Arraylist>;_Java_Algorithm_Data Structures_Hashmap - Fatal编程技术网

Java 在Hashmap中查找最大值的最佳方法<;Arraylist,Arraylist>;

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,如下所示

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,这不是我在这里的意图。