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 credentials caching

SVN client has a built-in system for caching authentication credentials on disk. It saves the credentials in the user's private runtime configuration area ~/.subversion/auth/ (Unix-like systems) %APPDATA%/Subversion/auth/ (Windows) If you dont want to catch the credeitials for a commit, use --no-auth-cache. $ svn commit --no-auth-cache Here we are telling the svn client that dont cach authentication credentials. You can disable credential caching permanently by editing your runtime config file (located next to the auth/ directory). Set store-auth-creds to no. [auth] store-auth-creds = no

log4j - use logger instead of category

Do not use 'category'. In log4j 1.2, the Category class has marked as being deprecated and has been replaced by the Logger class. I am using log4j-1.2.14.jar and category didn't work for me. Example: <logger name="com.test.pkg1"><level value="INFO"/></logger> <logger name="com.test.pkg2"><level value="INFO"/></logger> Was: <category name="com.test.pkg1"><priority value="INFO"/></category> <category name="com.test.pkg2"><priority value="INFO"/></category>

Java Data Objects

JDO has nothing to do with where methods are executed. JDO simply specifies how the fields of a petent object should be managed in-memory, being transparently stored to and retrieved from an underlying datastore. With JDO, methods are invoked on persistent object by an application, as per any regular in-memory Java object. JDO has many implementations. Visit the following link to know about the available implementations. http://db.apache.org/jdo/impls.html