-2

我已经搜索了互联网,但我找不到我的问题的答案。我正在编写自己的数组列表结构。我希望使它成为一个排序数组,它将接收来自联系人类的对象以按姓氏排序。到目前为止我有这个,但我无法管理如何执行 add() 方法。

public class SortedArrayList <E extends Comparable<E>> implements SortedList<E>  {
private int currentSize;

private E elements[];



@SuppressWarnings("unchecked")
public SortedArrayList(int initialCapacity){
    if(initialCapacity < 1){
        throw new IllegalArgumentException("Need at least one element");
    }

    this.currentSize = 0;
    this.elements = (E[]) new Object[initialCapacity];

}

@Override
public Iterator<E> iterator() {
    // TODO Auto-generated method stub
    return new ListIterator<E>();
}

@Override
public boolean add(E obj) {


    if(obj == null){
         throw new IllegalArgumentException("object cannot be null.");
    }

    if(this.currentSize == this.elements.length){
        reAllocate();
    }
    E temp[];
    temp = elements;
    for(int i=0; i<= this.currentSize; i++){

            //if(obj.compareTo(elements[i]) < 0){
                //int target =i;
                //elements[i+1] = temp[i];
                //elements[target] = obj;
                //break;

            }


    }
    this.elements[this.currentSize++] = obj;        




    return true;
}
4

2 回答 2

0

您正在寻找什么,您可以使用 Apache Commons BeanUtils BeanComparator 来完成

看看这个例子

检查这个 SO:Comparator vs Apache BeanComparator

于 2013-10-04T04:21:51.787 回答
0

你可以这样做:

这就像你想要做一些排序的 E 类一样。

public class Customer implements Comparable<Customer>{

private String fname;
private String lname;

public String getFname() {
    return fname;
}
public void setFname(String fname) {
    this.fname = fname;
}
public String getLname() {
    return lname;
}
public void setLname(String lname) {
    this.lname = lname;
}

@Override
public int compareTo(Customer o) {
    return this.lname.compareTo(o.lname);
}

}

这是您的 SortedList 类:

public class SortedList{

List<Customer> custList = null;
public SortedList() {
    custList = new ArrayList<Customer>();
}

public Iterator<Customer> iterator(){
    return custList.iterator();
}

public void add(Customer c){
    custList.add(c);
    Customer[] cust= (Customer[]) custList.toArray();
    Arrays.sort(cust);
    custList = Arrays.asList(cust);
}
}

现在,每当您调用add方法时,它都会将客户添加到 currentList 并按姓氏排序。

希望这对您有所帮助。

于 2013-10-04T04:26:55.997 回答