HashMap返回空值

时间:2015-05-07 04:58:31

标签: java hashmap

嘿伙计这是我的代码在循环中我放了mapTable.get(“NN”)。它给出了正确的值,但是在循环外的print语句中它给出了null。请帮助。

Map<String,String> mapTable=new HashMap<String,String>();
    while((line2=br1.readLine())!=null)
    {
        if((!line2.trim().isEmpty())&&Character.isDigit(line2.charAt(0)))
        {
        String[] tmp=line2.split("\t");
        mapTable.put(tmp[1].trim(),tmp[2].trim());
        System.out.println("MAP-----"+tmp[1]+ " ->  "+tmp[2]+" ex "+mapTable.get("NN"));
        }   
    }
    printMap(mapTable);
    System.out.println("CHECKING-------> "+mapTable.get("NN"));


This is the output:

MAP-----NN  ->  n ex n
MAP-----NNS  ->  n ex n
MAP-----NNP  ->  n ex n
MAP-----NNPS  ->  n ex n
MAP-----PDT  ->   ex n
and so on..
JJ = adj
NN = n
WRB = adv
LS = 
PRP = prp
DT = dt
FW = pw

CHECKING-------> null

PrintMap功能:

    public static void printMap(Map mp) {
    Iterator it = mp.entrySet().iterator();
    while (it.hasNext()) {
        Map.Entry pair = (Map.Entry)it.next();
        System.out.println(pair.getKey() + " = " + pair.getValue());
        it.remove(); // avoids a ConcurrentModificationException
    }
}

2 个答案:

答案 0 :(得分:5)

删除行:

it.remove(); // avoids a ConcurrentModificationException

在此行中,您将从地图中删除所有元素。

答案 1 :(得分:3)

openssl s_client

在上面的方法中,您尝试迭代地图并打印它。但行

  

it.remove();

将从地图中删除条目。 清除所有条目后,您将尝试获取不在地图中的键“NN”的值。这就是你获得public static void printMap(Map mp) { Iterator it = mp.entrySet().iterator(); while (it.hasNext()) { Map.Entry pair = (Map.Entry)it.next(); System.out.println(pair.getKey() + " = " + pair.getValue()); it.remove(); // avoids a ConcurrentModificationException } 价值的原因。请删除null方法中的it.remove()行。

希望这会有所帮助:)