Map接口方面的疑惑_针对下面代码下面程序for循环中,当i=1时,(Integer) m.get(args[i])为什么会等于null?使得在下面三目运算中,取ONE的值?能否讲一下.
程序代码如下:********************************import java.util.*;
public class TestArgsWords  {
  private static final Integer ONE = new Integer(1);
  public static void main(String args[])  {
    Map m = new HashMap();
    for (int i = 0; i < args.length; i++) {
      Integer freq = (Integer) m.get(args[i]);
      m.put(args[i],(freq == null? ONE : new Integer(freq.intValue() + 1)));
    }
    System.out.println(m.size() + " distinct words detected:");
    System.out.println(m);
  }
}****************************

解决方案 »

  1.   

    一楼想修改,改不了.具体问题是这样的:Map接口方面的疑惑_针对下面代码
    Map接口方面的疑惑_针对下面代码
    下面程序for循环中,当i=0时,,(Integer) m.get(args)为null,但当i=1时,(Integer) m.get(args)为什么也会等于null?使得在下面三目运算中,取ONE的值?
    能否讲一下.程序代码如下:
    ********************************
    import java.util.*;
    public class TestArgsWords {
    private static final Integer ONE = new Integer(1);
    public static void main(String args[]) {
    Map m = new HashMap();
    for (int i = 0; i < args.length; i++) {
    Integer freq = (Integer) m.get(args);
    m.put(args,(freq == null? ONE : new Integer(freq.intValue() + 1)));
    }
    System.out.println(m.size() + " distinct words detected:");
    System.out.println(m);
    }
    }****************************假设在命令行这样运行:
    java TestArgsWords aaa bbb ccc aaa ddd ccc ccc得到结果是:
    4 distinct words detected:
    { aaa=2,ddd=1,ccc=3,bbb=1 }
      

  2.   

    import java.util.*; 
    public class TestArgsWords { 
    private static final Integer ONE = new Integer(1); 
    public static void main(String args[]) { 
    Map m = new HashMap(); 
    for (int i = 0; i < args.length; i++) { 
    Integer freq = (Integer) m.get(args); 
    m.put(args,(freq == null? ONE : new Integer(freq.intValue() + 1))); 

    System.out.println(m.size() + " distinct words detected:"); 
    System.out.println(m); 


    不明白楼主问什么?
    当i=1时没发现(Integer) m.get(args)为null;呀
    我运行的结果如下输入:"A","B","C","A","B","C","A","B","C"
    输出:
      1 distinct words detected:
      {[Ljava.lang.String;@6b97fd=9}
      

  3.   

    楼上朋友,你的这个代码数组String args[]里怎么少了个i?
      

  4.   

    标准写法public static void main(String[] args)
    表示参数为String类型的数组
      

  5.   

    计数的,楼主的代码没问题?args是一个数组,可以像你的代码那样用?
      

  6.   

    package org.leelin.demo;import java.util.*; 
    public class TestArgsWords { 
    private static final Integer ONE = new Integer(1); 
    public static void main(String args[]) { 
    Map m = new HashMap(); 
    for (int i = 0; i < args.length; i++) { 
    Integer freq = (Integer) m.get(args[i]); 
    m.put(args[i],(freq == null? ONE : new Integer(freq.intValue() + 1))); 

    System.out.println(m.size() + " distinct words detected:"); 
    System.out.println(m); 


      

  7.   

    import java.util.*;public class TestDistinct {

    public static void main(String[] args) {
    Map<String,Integer> map = new HashMap<String,Integer>();

    for(int i = 0 ;i<args.length; i++) {
    Integer freq = map.get(args[i]);
    if(freq == null) {
    map.put(args[i],1);
    }else {
    map.put(args[i],freq+1);
    }
    }
    System.out.println(map.size() + " distinct word detected");
    System.out.println(map);
    }
    }这样应该是可以的...