嘿伙计这是我的代码在循环中我放了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
}
}
答案 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()
行。
希望这会有所帮助:)