I'm trying to extend java.util.ArrayList to implement my own ArrayList which adds objects in an alphabetical order. After testing my code my list is still unsorted. Where am I going wrong? Also would it be more efficient to insert the items in an alphabetical order first rather than sorting afterwards?
SortedArrayClass -
public class SortedArrayList<E> extends ArrayList<E> {
private static final int DEFAULT_CAPACITY = 10;
private transient E[] data;
private int size;
public SortedArrayList(int capacity)
{
if (capacity < 0)
throw new IllegalArgumentException();
data = (E[]) new Object[capacity];
}
public SortedArrayList(){
this(DEFAULT_CAPACITY);
}
public boolean add(E e){
if (e instanceof User){
if (size == data.length)
ensureCapacity(size + 1);
data[size++] = e;
Collections.sort((List<User>) this, User.Comparators.lastName);
return true;
}
return false;
}
}
User class -
public class User implements Comparable<User> {
private String firstName;
private String lastName;
public User(String firstNameParam, String lastNameParam) {
this.firstName = firstNameParam;
this.lastName = lastNameParam;
}
public String getLastName(){
return lastName;
}
@Override
public int compareTo(User o) {
return Comparators.lastName.compare(this, o);
}
public static class Comparators {
public static Comparator<User> lastName = new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
if (o1.getLastName().compareTo(o2.getLastName()) < 0) {
return -1;
} else if (o1.getLastName().compareTo(o2.getLastName()) > 0) {
return 1;
} else {
return 0;
}
}
};
}
}
Comments
Post a Comment