import java.util.ArrayList;
import java.util.Comparator;public class SortList<E> {

private static final long serialVersionUID = -4229834399379130390L;
public static final int DESC = 0;
public static final int ASC = 1; private ArrayList<E> elements;
private Comparator<E> comparator;
private int sortType = ASC; public SortList(Comparator<E> comparator) {
this(comparator, ASC);
} public SortList(Comparator<E> comparator, int sortType) {
this.comparator = comparator;
elements = new ArrayList<E>();
if (sortType == DESC)
this.sortType = DESC;
} public void add(E e) {
if (elements.size() == 0) {
elements.add(e);
return;
} for (int i = 0; i < elements.size(); i++) {
E e1 = elements.get(i);
if (comparator.compare(e1, e) > 0) {
if (sortType == ASC) {
elements.add(i, e);
break;
} else {
if (i == elements.size() - 1) {
elements.add(i + 1, e);
break;
}
continue;
}
} else {
if (sortType == ASC) {
if (i == elements.size() - 1) {
elements.add(i + 1, e);
break;
}
continue;
} else {
elements.add(i, e);
break;
}
}
}
} public ArrayList<E> getElements() {
return elements;
}}
测试类:import java.util.Comparator;public class TestClass { /**
 * @param args
 */
public static void main(String[] args) {
SortList<Integer> list = new SortList<Integer>(new Comparator<Integer>(){ public int compare(Integer o1, Integer o2) {
return o1.compareTo(o2);
}

});

list.add(10);
list.add(1);
list.add(99);
list.add(77);
list.add(102);
list.add(104);

for(int i = 0; i < list.getElements().size(); i++)
{
System.out.println(list.getElements().get(i));
} }}

解决方案 »

  1.   


    import java.util.ArrayList;
    import java.util.Comparator;public class SortList<E> {
    /**
     * 
     */
    private static final long serialVersionUID = -4229834399379130390L;
    public static final int DESC = 0;
    public static final int ASC = 1; private ArrayList<E> elements;
    private Comparator<E> comparator;
    private int sortType = ASC; public SortList(Comparator<E> comparator) {
    this(comparator, ASC);
    } public SortList(Comparator<E> comparator, int sortType) {
    this.comparator = comparator;
    elements = new ArrayList<E>();
    if (sortType == DESC)
    this.sortType = DESC;
    } public void add(E e) {
    if (elements.size() == 0) {
    elements.add(e);
    return;
    } for (int i = 0; i < elements.size(); i++) {
    E e1 = elements.get(i);
    if (comparator.compare(e1, e) > 0) {
    if (sortType == ASC) {
    elements.add(i, e);
    break;
    } else {
    if (i == elements.size() - 1) {
    elements.add(i + 1, e);
    break;
    }
    continue;
    }
    } else {
    if (sortType == ASC) {
    if (i == elements.size() - 1) {
    elements.add(i + 1, e);
    break;
    }
    continue;
    } else {
    elements.add(i, e);
    break;
    }
    }
    }
    } public ArrayList<E> getElements() {
    return elements;
    }}
      

  2.   


    import java.util.Comparator;public class TestClass { /**
     * @param args
     */
    public static void main(String[] args) {
    SortList<Integer> list = new SortList<Integer>(new Comparator<Integer>(){ public int compare(Integer o1, Integer o2) {
    return o1.compareTo(o2);
    }

    });

    list.add(10);
    list.add(1);
    list.add(99);
    list.add(77);
    list.add(102);
    list.add(104);

    for(int i = 0; i < list.getElements().size(); i++)
    {
    System.out.println(list.getElements().get(i));
    } }}
      

  3.   

    其他没什么的啊,就是那个SortList.add()方法,把里面的算法变成二分排序法就可以了
       现在可以实现排序了,就是想把他的算法改变一下