Map,HashMap五种遍历方法
假设有数组
HashMap<Integer, String> h=new HashMap<Integer,String>(); h.put(111, "111-"); h.put(222, "222-");
在操作之前明确几个方法的调用位置
1.keyset方法Map接口 2.get()方法,来自Map 3.Set<Map.Entry<K,V>> entrySet() 来自Map 4.Set<K> keySet() 来自Map 5.iterator() 来自 Collection 6.getValue()和getKye() 来自 Map内部类entry
//1.使用增强for 和 keySet()方法
//先使用Map接口中的keySet()方法 获取返回值set<k>对象,或者叫数组 Set<Integer> s=h.keySet(); //此时获得key值 //遍历使用增强for for(Integer i:s) { //i为key //使用Map接口中的get(key) 方法,返回值为对应的value system.out.println(h.get(i)); }
//2.使用增强for和Iterator,keyset遍历
//先使用Map接口中的keySet()方法 获取返回值set<k>对象,或者叫数组 Set<Integer> s=h.keySet(); //使用Iterator接口中的iterator()方法,返回值为Iterator<E>对象,set继承了Collection //所以拥有iterator()方法,可以直接使用 Iterator i=s.iterator(); //使用增强for遍历 while(i.hasnext()) { system.out.println(s.get(i.next())); }
//3.使用entrySet()和增强for
Set<Map.Entry<Integer, String>> s3=h.entrySet(); for(Map.Entry<Integer, String> m:s3) { System.out.println(m.getValue()+m.getKey()); }
//4.使用entrySet()和Iterator
Set<Map.Entry<Integer, String>> s4=h.entrySet(); Iterator<Map.Entry<Integer, String>> i2=s4.iterator(); while(i2.hasNext()) { Map.Entry<Integer, String> a=i2.next(); System.out.println(a.getValue()+a.getKey()); }
//5.只能遍历到内容的方法
//Collection<String> c2=new ArrayList<String>(); Collection<String> c=h.values(); //ArrayList<String> a=(ArrayList<String>)c; for(String s:c) { System.out.println(s); }