In order to sort a Collection, one should use java.util.Collections class as follows (assuming ArrayList will be used):
List another object
- the drawback: there’s only one way of sorting
Example of the class implementing Comparable interface:
class Book implements Comparable {
private String title;
public String getTitle() {
return title;
}
public void setTitle(String title_p) {
title = title_p;
}
public int compareTo(Book o) {
return this.title.compareTo(o.getTitle());
}
}
java.util.Comparator
- used to sort:
- a
List–java.util.Collections.sort(A_COLLECTION, Comparator) - an array of objects –
java.util.Arrays.sort(AN_ARRAY, Comparator)
- a
- a special class that implements
java.util.Comparatorinterface needs to be created; this class definespublic int compare(MyClass o1, MyClass o2)method (only one), which returns:- negative value – this object < another object
- 0 – this object == another object
- positive value – this object > another object
- allows many one ways of sorting
- allows to sort even those class that can’t be modified
Example of the class implementing Comparator interface:
class NameSort implements Comparator { public int compare(Book book1, Book book2) { return book1.getTitle().compareTo(book2.getTitle()); } }
Searching
- In order to search in a
Collectionor an array of objects, they must be sorted:Arrays.sort(anArray); Arrays.binarySearch(anArray, "string_to_search");
or
Arrays.sort(anArray, aComparator); Arrays.binarySearch(anArray, "string_to_search", aComparator);
- when search succeeds, the index of the serched element is returned
- when search fails, insertionPoint is returned:
-(insertion point) - 1(if the element should be placed as a firston, so at 0 index, the returned value is -1)