为 Vector 添加sort()快速排序方法
SortVector .java:
import java.util.Vector;
interface Compare{
boolean lessThan(Object lhs, Object rhs);
boolean lessThanOrEqual(Object lhs, Object rhs);
}
public class SortVector extends Vector{
private Compare compare;
public SortVector(Compare comp){
compare = comp;
}
public void sort(){
quickSort(0, size()-1);
}
private void quickSort(int left, int right){
if(right > left){
Object ol = elementAt(right);
int i = left - 1;
int j = right;
while(true){
while(compare.lessThan(elementAt(++i), ol));
while(j>0){
if(compare.lessThanOrEqual(elementAt(--j), ol)){
break;
}
}
if(i >= j){
break;
}
swap(i, j);
}
swap(i, right);
quickSort(left, i-1);
quickSort(i+1, right);
}
}
private void swap(int loc1, int loc2){
Object tmp = elementAt(loc1);
setElementAt(elementAt(loc2), loc1);
setElementAt(tmp, loc2);
}
}
2、StringSortTest .java:
import java.util.Enumeration; public class StringSortTest { static class StringCompare implements Compare{ @Override public boolean lessThan(Object lhs, Object rhs) { return ((String)lhs).toLowerCase().compareTo(((String)rhs).toLowerCase()) < 0; } @Override public boolean lessThanOrEqual(Object lhs, Object rhs) { return ((String)lhs).toLowerCase().compareTo(((String)rhs).toLowerCase()) <= 0; } } public static void main(String[] args) { SortVector sv = new SortVector(new StringCompare()); sv.addElement("d"); sv.addElement("A"); sv.addElement("b"); sv.addElement("D"); sv.addElement("c"); sv.addElement("B"); sv.addElement("f"); sv.sort(); Enumeration e = sv.elements(); while(e.hasMoreElements()){ System.out.println(e.nextElement()); } } }
结果:
A b B c d D f
