Capturing null values in java

Hi experts...
I have two java functions which take in two maps of type LinkedHashMap<String,Integer> sampleMap = new LinkedHashMap<String,Integer>();

I have a condition where one of the values of the maps turn out as null i want to be able to capture its value.

How do i achieve this.
Please help...
public static <K extends Comparable<? super K>, V> Map<K, Boolean> compareEntries(final Map<K, V> map1, final Map<K, V> map2)
	{ 	
		int cnt1=0,cnt2=0;
		String val1=null,val2=null;
		Map<K,Boolean> result=null;
		try
		{
		final Collection<K> allKeys = new HashSet<K>(); 

		allKeys.addAll(map1.keySet()); 

		allKeys.addAll(map2.keySet()); 

		result = new TreeMap<K,Boolean>(); 

		for(final K key : allKeys)
		
		{ 
			result.put(key, map1.containsKey(key) == map2.containsKey(key) && Boolean.valueOf(equal(map1.get(key), map2.get(key))));
		
		
		} 
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}

		return result; 
	}	 
	
	
	private static boolean equal(final Object obj1, final Object obj2)
	{ 
		double max=0;
		int i1=0,i2=0;
		try
		{
		int intermediate=(Integer) obj1;
		max=intermediate*devForStudents;
		i1 = (Integer)obj1;
	    i2 = (Integer) obj2;
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		
		return obj1 == obj2 || (obj1 != null && Math.abs(i1-i2) <= max);
	
	}

Open in new window

gaugetaAsked:
Who is Participating?
 
for_yanCommented:


Perhaps you want to change the second method like this:
	private static boolean equal(final Object obj1, final Object obj2)
	{ 
        if(obj1 == null && obj2 == null) return true;
      if(obj1 == null && obj2 != null) return false;
      if(obj1 != null && obj2 == null) return false;
		double max=0;
		int i1=0,i2=0;
		try
		{
		int intermediate=(Integer) obj1;
		max=intermediate*devForStudents;
		i1 = (Integer)obj1;
	    i2 = (Integer) obj2;
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		
		return obj1 == obj2 || (obj1 != null && Math.abs(i1-i2) <= max);
	
	}

Open in new window


I'm also not sure why you want to have
return obj1 == obj2 || (obj1 != null && Math.abs(i1-i2) <= max);

You should proably still have

return obj1.equals(obj2) || (obj1 != null && Math.abs(i1-i2) <= max);




0
 
ksivananthCommented:
something like this?

if( map1 != null ) allKeys.addAll(map1.keySet());

if( map2 != null ) allKeys.addAll(map2.keySet());

0
 
CEHJCommented:
>>I have a condition where one of the values of the maps turn out as null i want to be able to capture its value.

Wouldn't its value be ... null?
0
 
thomasbau65Commented:
This is the one line (in your equal method)  making trouble if the Map object contains keys with a null value

int intermediate = (Integer) obj1;

check if the object is null before casting

like:
if(obj1 != null)...
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.