哈希映射和空值?

你如何将空值传入HashMap?
以下代码片段适用于填充选项:

HashMap<String, String> options = new HashMap<String, String>(); options.put("name", "value"); Person person = sample.searchPerson(options); System.out.println(Person.getResult().get(o).get(Id)); 

所以问题是什么必须input到选项和或方法来传递一个空值?
我尝试了下面的代码没有任何成功:

 options.put(null, null); Person person = sample.searchPerson(null); options.put(" ", " "); Person person = sample.searchPerson(null); options.put("name", " "); Person person = sample.searchPerson(null); options.put(); Person person = sample.searchPerson(); 

HashMap支持null键和值

http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html

…并允许空值和null键

所以你的问题可能不是地图本身。

你可以留意下面的可能性:

1.在地图中input的值可以为null

然而,对于多个null键和值,它只会使用一个空键值对。

 Map<String, String> codes = new HashMap<String, String>(); codes.put(null, null); codes.put(null,null); codes.put("C1", "Acathan"); for(String key:codes.keySet()){ System.out.println(key); System.out.println(codes.get(key)); } 

输出将是:

 null //key of the 1st entry null //value of 1st entry C1 Acathan 

2.你的代码只会执行一次null

 options.put(null, null); Person person = sample.searchPerson(null); 

这取决于你的searchPerson方法的实现,如果你想多个值为null ,你可以相应地实现

 Map<String, String> codes = new HashMap<String, String>(); codes.put(null, null); codes.put("X1",null); codes.put("C1", "Acathan"); codes.put("S1",null); for(String key:codes.keySet()){ System.out.println(key); System.out.println(codes.get(key)); } 

输出:

 null null X1 null S1 null C1 Acathan 

看起来你正试图用Map参数调用一个方法。 所以,用一个空的名字打电话应该是正确的方法

 HashMap<String, String> options = new HashMap<String, String>(); options.put("name", null); Person person = sample.searchPerson(options); 

或者你可以这样做

 HashMap<String, String> options = new HashMap<String, String>(); Person person = sample.searchPerson(options); 

运用

 Person person = sample.searchPerson(null); 

可以让你一个空指针exception。 这一切都取决于searchPerson()方法的实现。

它是一个很好的编程习惯,以避免在一个地图中null

如果您有一个null值的条目,则无法判断条目是否存在于映射中,或者是否具有与其相关的null值。

你可以为这种情况定义一个常量(例如: String NOT_VALID = "#NA" ),或者你可以有另一个集合存储具有null值的键。

请检查此链接了解更多详情。

根据你的第一个代码snipet似乎没问题,但我有类似的行为造成不良的编程。 你有没有检查“选项”variables是不是null之前的看涨期权?

我正在使用Struts2(2.3.3)webapp并使用HashMap来显示结果。 何时执行(在由Action类初始化的类中):

 if(value != null) pdfMap.put("date",value.toString()); else pdfMap.put("date",""); 

得到这个错误:

 Struts Problem Report Struts has detected an unhandled exception: Messages: File: aoc/psisclient/samples/PDFValidation.java Line number: 155 Stacktraces java.lang.NullPointerException aoc.psisclient.samples.PDFValidation.getRevisionsDetail(PDFValidation.java:155) aoc.action.signature.PDFUpload.execute(PDFUpload.java:66) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) ... 

似乎NullPointerException指向put方法(行号155),但问题是de Map之前还没有被初始化。 编译好了,因为variables超出了设置值的方法。

你可以这样做:

 String k = null; String v = null; options.put(k,v);