Skip to main content

Comparable interface

Lists and Arrays of objects that implement Comparable interface can be sorted automatically by Collections.sort and Arrays.sort respectively.

Implementation Comparable is easy. You just have to implement compareTo(Object o). It should return negative integer, zero, or a positive integer as this object is less than, equal to,or greater than the specified object.

Here goes an example:

public void testListSort(){

Calendar cal = Calendar.getInstance();
cal.set(2010, 10, 1);
License msWindows7 = new License("Windows", "7",new Date(cal.getTimeInMillis()));
cal.clear();
cal.set(2010, 11, 10);
License msWindowsVista = new License("Windows", "Vista", new Date(cal.getTimeInMillis()));
cal.clear();
cal.set(2010, 11, 5);
License lotusNotes = new License("Notes", "1.1", new Date(cal.getTimeInMillis()));

List list = new ArrayList(3);

list.add(lotusNotes);
list.add(msWindowsVista);
list.add(msWindows7);

Collections.sort(list);

for(License l : list){
System.out.println(l);
}
}

private class License implements Comparable{
String id;
String version;
Date expiryDate;

public License(String id, String version,
Date expiryDate) {
this.id = id;
this.version = version;
this.expiryDate = expiryDate;
}

@Override
public int compareTo(License license) {
// Returns a negative integer, zero, or a positive integer as this object is less than,
// equal to,or greater than the specified object.

if(this.expiryDate.after(license.expiryDate)){
return 1;
}
else{
return 0;
}
}

@Override
public String toString(){
return "id: " + id + "\n" +
"version: " + version + "\n" +
"expiryDate: " + expiryDate + "\n\n";
}
}




Your comments are welcome as always :)

Comments

Popular posts from this blog

SVN red book

I normally use Subclipse plugin for Eclipse for SVN operations. It really makes life easy. I am a novice when it comes to performing svn operations using SVN commands. I found a very useful resource for that: HTML version of SVN red book (for subversion 1.5) Hope you find this useful :)

JAR file

The JAR file format is based on the popular ZIP file format, and is used for aggregating many files into one. Unlike ZIP files, JAR files are used not only for archiving and distribution, but also for deployment and encapsulation of libraries, components, and plug-ins, and are consumed directly by tools such as compilers and JVMs. Special files contained in the JAR, such as manifests and deployment descriptors, instruct tools how a particular JAR is to be treated. A JAR file might be used: * For distributing and using class libraries * As building blocks for applications and extensions * As deployment units for components, applets, or plug-ins * For packaging auxiliary resources associated with components