Java 当异常也发生时,如何运行迭代

Java 当异常也发生时,如何运行迭代,java,dictionary,data-structures,hashmap,Java,Dictionary,Data Structures,Hashmap,我有一个哈希映射,其中一些值在哈希映射中为空。因此我只想打印哈希映射中的键和值对。因此我尝试使用 HashMap<Integer, ArrayList<Long>> map=new HashMap<Integer,ArrayList<Long>>(); try{ for(int s=0;s<map.size();s++){ // checking for null if(map.get(s).size()

我有一个哈希映射,其中一些值在哈希映射中为空。因此我只想打印哈希映射中的键和值对。因此我尝试使用

HashMap<Integer, ArrayList<Long>> map=new HashMap<Integer,ArrayList<Long>>();
try{
    for(int s=0;s<map.size();s++){

       // checking for null
       if(map.get(s).size()>0 || map.get(s)!=null){

            System.out.println(s+" is the key and "+map.get(s).size() +" is the size of values for the key and "+map.get(s).toString()+ " are the values");

                                                  }
                                  }
    } 
    catch(Exception e){
    }
HashMap map=newhashmap();
试一试{
for(int s=0;s0 | | map.get(s)!=null){
System.out.println(s+)是键,“+map.get(s).size()+”是键值的大小,“+map.get(s).toString()+”是值);
}
}
} 
捕获(例外e){
}

但当第一个元素的值不为null时,此操作将运行,在这种情况下,当值为null时将停止。非常感谢您的帮助。

您的
检查null
是错误的。在检查是否为null之前,访问可能为null值的size()


更改表达式
map.get(s).size()>0 | | map.get(s)=空
to
map.get(s)!=如果只想打印大小大于0的值,或者如果(map.get.s)!=null,则只需使用
null&&map.get.size()>0

您的
检查null
是错误的。在检查是否为null之前,访问可能为null值的size()

更改表达式
map.get(s).size()>0 | | map.get(s)=空
to
map.get(s)!=如果只想打印大小大于0的值,或者只需使用
if(map.get(s)!=null)

导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.HashMap;
导入java.util.Map.Entry;
HashMap=新的HashMap
();
ArrayList s=新的ArrayList();
s、 添加(1L);
s、 添加(2L);
地图放置(0,s);
地图.put(1,s);;
map.put(null,null);
地图.put(1,s);;
对于(条目kv:map.entrySet()){
System.out.println(kv.getValue()+“,“+kv.getKey());;
}
希望它能起作用

import java.io.IOException;
导入java.util.ArrayList;
导入java.util.HashMap;
导入java.util.Map.Entry;
HashMap=新的HashMap
();
ArrayList s=新的ArrayList();
s、 添加(1L);
s、 添加(2L);
地图放置(0,s);
地图.put(1,s);;
map.put(null,null);
地图.put(1,s);;
对于(条目kv:map.entrySet()){
System.out.println(kv.getValue()+“,“+kv.getKey());;
}

希望它能起作用

那么。。。在对值调用size()和toString()之前是否检查null?为什么要抛出异常?为什么要使用映射来存储从0到N的键,而不仅仅是一个列表?当然,为什么不适当地缩进代码以使其可读?而且代码仍然没有适当地缩进,而且你没有回答我的任何问题。在调用size()和toString()之前检查null值?--在if语句检查中完成,抛出异常?--删除,为什么要使用映射来存储0到N的键,而不仅仅是一个列表——在这种情况下,我需要一个地图来快速搜索给定的键。不,没有完成。ArrayList通过索引获取元素的速度比map快。使你的代码正确。如果你有速度问题,想想速度。而且你永远都不应该,cacth NullPointerException。那。。。在对值调用size()和toString()之前是否检查null?为什么要抛出异常?为什么要使用映射来存储从0到N的键,而不仅仅是一个列表?当然,为什么不适当地缩进代码以使其可读?而且代码仍然没有适当地缩进,而且你没有回答我的任何问题。在调用size()和toString()之前检查null值?--在if语句检查中完成,抛出异常?--删除,为什么要使用映射来存储0到N的键,而不仅仅是一个列表——在这种情况下,我需要一个地图来快速搜索给定的键。不,没有完成。ArrayList通过索引获取元素的速度比map快。使你的代码正确。如果你有速度问题,想想速度。你永远不应该,永远,cacth NullPointerException。
  import java.io.IOException;
  import java.util.ArrayList;
  import java.util.HashMap;
  import java.util.Map.Entry;
  HashMap<Integer, ArrayList<Long>> map=new HashMap<Integer,ArrayList<Long>>   
  ();
     ArrayList<Long> s = new ArrayList<>(); 
     s.add(1L);
     s.add(2L);
     map.put(0, s);
     map.put(1, s);
     map.put(null, null);
     map.put(1, s);
     for(Entry<Integer, ArrayList<Long>> kv:map.entrySet()){
         System.out.println(kv.getValue()+","+kv.getKey());;
     }