您的位置:首页 > 编程语言 > Java开发

Java中可以对element实现排序的Vector

2010-08-11 19:52 183 查看
//Compare.java
package sorttools.tomchaozhou.cuhk;
// The interface need to be implemented when different Vectors of objects are used.
public interface Compare {
boolean lessThan(Object lhs, Object rhs);
boolean lessThanOrEqual(Object lhs, Object rhs);
}
//SortVector.java
package sorttools.tomchaozhou.cuhk;
import java.util.*;
// SortVector could sort items in the Vector from small to big.
public class SortVector extends Vector {
private Compare compare;
public SortVector(Compare comp) {
compare = comp;
}
// Sort the elements in vector from small to big.
public void sort() {
quickSort(0, size() - 1);
}

// Reverse elements in the vector.
public void reverse() {
if (size() <= 1)
;
else {
for (int i = 0, j = size()-1; i < j; ++i, --j) {
swap(i, j);
}
}
}
private void quickSort(int left, int right) {
if (right > left) {
Object o1 = elementAt(right);
int i = left - 1;
int j = right;
while (true) {
while (compare.lessThan(elementAt(++i), o1))
;
while (j > 0)
if (compare.lessThanOrEqual(elementAt(--j), o1))
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);
}
}
//StringSortTest.java
package sorttools.tomchaozhou.cuhk;
import java.util.*;
public class StringSortTest {
static class StringCompare implements Compare {
public boolean lessThan(Object l, Object r) {
return ((String)l).toLowerCase().compareTo(((String)r).toLowerCase()) < 0;
}
public boolean lessThanOrEqual(Object l, Object r) {
return ((String)l).toLowerCase().compareTo(((String)r).toLowerCase()) <=0;
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SortVector sv = new SortVector(new StringCompare());
sv.addElement("d");
sv.addElement("A");
sv.addElement("C");
sv.addElement("c");
sv.addElement("b");
sv.addElement("B");
sv.addElement("D");
sv.addElement("a");
sv.addElement("z");
sv.sort();
//sv.reverse();
Enumeration e = sv.elements();
while(e.hasMoreElements())
System.out.println(e.nextElement());
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: