HashMaps and Null values?
JavaNullHashmapHashcodeJava Problem Overview
How do you pass in null values into a HashMap?
The following code snippet works with options filled in:
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));
So the issue is what has to be entered into the options and or method to pass in a null value?
I tried the following code without any success:
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();
Java Solutions
Solution 1 - Java
HashMap supports both null
keys and values
http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html
> ... and permits null values and the null key
So your problem is probably not the map itself.
Solution 2 - Java
You can keep note of below possibilities:
null
.
1. Values entered in a map can be However with multiple null
keys and values it will only take a null key value pair once.
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));
}
output will be :
null //key of the 1st entry
null //value of 1st entry
C1
Acathan
###2. your code will execute null
only once###
options.put(null, null);
Person person = sample.searchPerson(null);
It depends on the implementation of your searchPerson
method
if you want multiple values to be null
, you can implement accordingly
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));
}
output:
null
null
X1
null
S1
null
C1
Acathan
Solution 3 - Java
It seems that you are trying to call a method with a Map
HashMap<String, String> options = new HashMap<String, String>();
options.put("name", null);
Person person = sample.searchPerson(options);
Or you can do it like this
HashMap<String, String> options = new HashMap<String, String>();
Person person = sample.searchPerson(options);
Using
Person person = sample.searchPerson(null);
Could get you a null pointer exception. It all depends on the implementation of searchPerson() method.
Solution 4 - Java
Its a good programming practice to avoid having null
values in a Map.
If you have an entry with null
value, then it is not possible to tell whether an entry is present in the map or has a null
value associated with it.
You can either define a constant for such cases (Example: String NOT_VALID = "#NA"
), or you can have another collection storing keys which have null
values.
Please check this link for more details.
Solution 5 - Java
i was getting hashmap with null values like this
{fieldCode1=F0001, fieldId10=null, fieldId11=null }
i used the method from using Guava library using below link https://www.techiedelight.com/remove-null-values-map-java/
Iterables.removeIf(inputParams.values(), Predicates.isNull());
inputParams is the hashmap
Hashmap value after using the method {fieldCode1=F0001}
Use the below import packages import com.google.common.collect.Iterables; import com.google.common.base.Predicates;
Solution 6 - Java
Acording to your first code snipet seems ok, but I've got similar behavior caused by bad programing. Have you checked the "options" variable is not null before the put call?
I'm using Struts2 (2.3.3) webapp and use a HashMap
if(value != null) pdfMap.put("date",value.toString());
else pdfMap.put("date","");
Got this error:
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)
...
Seems the NullPointerException points to the put method (Line number 155), but the problem was that de Map hasn't been initialized before. It compiled ok since the variable is out of the method that set the value.
Solution 7 - Java
you can probably do it like this:
String k = null;
String v = null;
options.put(k,v);