Re: Comparator in the driver
thufir wrote:
79 static final Comparator<Guest> BY_NAME = new
Comparator<Guest>(){
80 public int compare(Guest g1, Guest g2){
81 ContactInfo c1 = g1.getContactInfo();
What if g1 or g2 are null?
82 ContactInfo c2 = g2.getContactInfo();
83 System.out.println("******************");
Don't put output in a Comparator.
84 String s1 = c1.getLastName();
85 String s2 = c2.getLastName();
What if c1 or c2 are null?
If the design of ContactInfo guarantees non-null elements, use 'assert' to
assure the invariants.
86 int foo = s1.compareTo(s2);
87 System.out.println(foo);
Really, don't put output in Comparators. Also, "System.out.println()" may be
ugly and inflexible, but at least it causes lots of unnecessary overhead in
production without providing any benefit as used here.
88 return foo;
89 }
90 };
I'd like to put this Comparator into a00720398.util.CollectionUtil and
That's an interesting package name.
still keep the collections in the driver to meet other requirements.
Any pointers as to how to do that?
Just declare a top-level class in that package.
package a00720398.util;
public class GuestComparer implements Comparator <Guest>
{
@Override
public int compare( Guest g1, Guest g2 )
{
if ( g1 == null )
{
return (g2 == null? 0 : -1);
}
if ( g2 == null )
{
return 1;
}
ContactInfo
c1 = g1.getContactInfo(),
c2 = g2.getContactInfo();
return (c1 == null? (c2 == null? 0 : -1)
: c1.compareTo( c2 ));
}
}
If you want to make it a nested class (why in the world would one do that?),
that's easy enough to do.
--
Lew