Donate. I desperately need donations to survive due to my health

Get paid by answering surveys Click here

Click here to donate

Remote/Work from Home jobs

Extending ArrayList and sorting alphabetically

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