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