Collections.sort(foos, new Comparator<Foo>){
public int compare(Foo a, Foo b){
int dateComparison=a.date.before(b.date);
return dateComparison == 0 ?a.amt.compareTo(b.amt) : dateComparison;
}
});
Asked
Active
Viewed 215 times
-1
-
So if two dates are `null` what does that mean for your sort? Just sort by the amount? – MadProgrammer Jan 13 '16 at 02:43
-
Conditionon is if two dates are equal then sort on amount.date can contain null value but amt will never at any case.Whn I used the above code I get null pointer exception when it first compare two dates which are null in before() methods – mindSet Jan 13 '16 at 02:52
-
Well, obviously. But are two `null` dates equal? – MadProgrammer Jan 13 '16 at 02:54
-
Yes two null dates are considered equal – mindSet Jan 13 '16 at 03:09
-
Possible duplicate of [What is a Null Pointer Exception, and how do I fix it?](http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how-do-i-fix-it) – Tom Jan 13 '16 at 03:14
1 Answers
0
two null dates are considered equal
So, you simply need to add in a check for two null
dates...
Collections.sort(foo, new Comparator<Foo>() {
public int compare(Foo a, Foo b) {
int dateComparison = 0;
if (a.date == null && b.date == null) {
dateComparison = 0;
} else if (a.date == null) {
dateComparison = -1;
} else if (b.date == null) {
dateComparison = 1;
}
return dateComparison == 0 ? a.amt.compareTo(b.amt) : dateComparison;
}
});
Now, you will need to adjust the dateComparison
for when one of the date
values is null
based on your needs, but, that's the basic idea

MadProgrammer
- 343,457
- 22
- 230
- 366
-
thanks@madProgrammer :how can achieve this : if date contain null in an object then that object should not be considered in sorting – mindSet Jan 13 '16 at 04:11
-
@MASHUKAHMED Well, either it needs to be removed from the list or possible sorted to the bottom of the list, you can't "partially" sort a list, it doesn't make sense – MadProgrammer Jan 13 '16 at 04:12