map遍历与统计

来源:互联网 发布:苏州整站优化 编辑:程序博客网 时间:2024/06/18 11:23

遍历Map方法一(通过HashMap类实现统计单词出现次数)


要求:通过命令行输入多个单词,单词之间用逗号分开,统计每个单词出现的次数,并把单词和其出现的次数分别打印出来,使用HashMap类实现。

输入单词如下图:


package michael.wlq;import java.util.HashMap;import java.util.Iterator;import java.util.Set;public class MapTest {public static void main(String[] args) {HashMap<String, Integer> map = new HashMap<String, Integer>();for (int i = 0; i < args.length; i++) {if (map.get(args[i]) == null) {map.put(args[i], new Integer(1));} else {Integer in = (Integer) map.get(args[i]);in = new Integer(in.intValue() + 1);map.put(args[i], in);}}// 通过keySet()方法获取键的集合Set<String> set = map.keySet();// 遍历键的集合,获取每个key,然后通过map.get(key)方法得到valuefor (Iterator<String> iter = set.iterator(); iter.hasNext();) {String key = (String) iter.next();Integer value = (Integer) map.get(key);System.out.println(key + "  : " + value);}}}

String[] ks = { "11", "22", "33", "44", "55", "44", "33", "11" };Map<String, Integer> map = new HashMap<String, Integer>();for (String s : ks) {if (map.get(s) != null) {map.put(s, map.get(s) + 1);} else {map.put(s, 1);}}System.out.println("统计输出:");for (String s : map.keySet()) {System.out.println("" + s + "  :  " + map.get(s));}




map遍历的四种方式
public class TestMap { 6     public static void main(String[] args) { 7         Map<Integer, String> map = new HashMap<Integer, String>(); 8         map.put(1, "a"); 9         map.put(2, "b");10         map.put(3, "ab");11         map.put(4, "ab");12         map.put(4, "ab");// 和上面相同 , 会自己筛选13         System.out.println(map.size());14         // 第一种:21         System.out.println("第一种:通过Map.keySet遍历key和value:");22         for (Integer in : map.keySet()) {23            24             String str = map.get(in);//得到每个key多对用value的值25             System.out.println(in + "     " + str);26         }27         // 第二种:28         System.out.println("第二种:通过Map.entrySet使用iterator遍历key和value:");29         Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator();30         while (it.hasNext()) {31              Map.Entry<Integer, String> entry = it.next();32                System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());33         }34         // 第三种:推荐,尤其是容量大时35         System.out.println("第三种:通过Map.entrySet遍历key和value");36         for (Map.Entry<Integer, String> entry : map.entrySet()) {37             //Map.entry<Integer,String> 映射项(键-值对)  有几个方法:用上面的名字entry38             //entry.getKey() ;entry.getValue(); entry.setValue();39             //map.entrySet()  返回此映射中包含的映射关系的 Set视图。40             System.out.println("key= " + entry.getKey() + " and value= "41                     + entry.getValue());42         }43         // 第四种:44         System.out.println("第四种:通过Map.values()遍历所有的value,但不能遍历key");45         for (String v : map.values()) {46             System.out.println("value= " + v);47         }48     }49 }



方法一 在for-each循环中使用entries来遍历

这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。

[java] view plain copy
  1. Map<Integer, Integer> map = new HashMap<Integer, Integer>();  
  2.   
  3. for (Map.Entry<Integer, Integer> entry : map.entrySet()) {  
  4.   
  5.     System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());  
  6.   
  7. }  


注意:for-each循环在java 5中被引入所以该方法只能应用于java 5或更高的版本中。如果你遍历的是一个空的map对象,for-each循环将抛出NullPointerException,因此在遍历前你总是应该检查空引用。

 

方法二 在for-each循环中遍历keys或values。

如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用entrySet。

[java] view plain copy
  1. Map<Integer, Integer> map = new HashMap<Integer, Integer>();  
  2.   
  3. //遍历map中的键  
  4.   
  5. for (Integer key : map.keySet()) {  
  6.   
  7.     System.out.println("Key = " + key);  
  8.   
  9. }  
  10.   
  11. //遍历map中的值  
  12.   
  13. for (Integer value : map.values()) {  
  14.   
  15.     System.out.println("Value = " + value);  
  16.   
  17. }  




方法三使用Iterator遍历

使用泛型:

[java] view plain copy
  1. Map<Integer, Integer> map = new HashMap<Integer, Integer>();  
  2.   
  3. Iterator<Map.Entry<Integer, Integer>> entries = map.entrySet().iterator();  
  4.   
  5. while (entries.hasNext()) {  
  6.   
  7.     Map.Entry<Integer, Integer> entry = entries.next();  
  8.   
  9.     System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());  
  10.   
  11. }  


不使用泛型:

[java] view plain copy
  1. Map map = new HashMap();  
  2.   
  3. Iterator entries = map.entrySet().iterator();  
  4.   
  5. while (entries.hasNext()) {  
  6.   
  7.     Map.Entry entry = (Map.Entry) entries.next();  
  8.   
  9.     Integer key = (Integer)entry.getKey();  
  10.   
  11.     Integer value = (Integer)entry.getValue();  
  12.   
  13.     System.out.println("Key = " + key + ", Value = " + value);  
  14.   
  15. }  
  1.  

0 0
原创粉丝点击