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()); } }
相关文章推荐
- Vector 多字段排序的Java实现
- JAVA中关于对象数组是否可以实现Comparable接口和排序问题
- java的List接口的实现类 ArrayList,LinkedList,Vector 的区别
- 【常用排序算法】选择排序(Java实现)
- 查找""排序""简单数学计算" "简单算法"[Java实现](数据结构和算法)(复习)(持续更新
- java中各种排序的实现 不断更新
- Java 实现各种排序算法并测试排序效率
- 插入排序之折半插入排序(java实现)
- java实现三种经典排序法
- 单链表排序操作(java语言实现)
- java中实现HashMap中的按照key的字典顺序排序输出
- sort实现vector的多级排序
- java 实现多种排序
- JAVA中使用静态内部类Comparator实现集合的排序
- JAVA学习笔记---java语言实现冒泡排序,选择排序,反转排序
- 排序与查找简单算法 java代码实现
- java 将字符串数组实现排序
- 排序-插入排序(java实现)
- java实现选择排序
- 程序员必知的8大排序(java实现)