Vector 多字段排序的Java实现
2024-10-13 13:57:05
要求实现:
Vector 多字段排序,其中首元素不参与排序,第一二三字段升序,空排到前面。
//这里是Vector的元素定义
public class AVectorElement { private String sort_first_Field;
private String sort_second_Field;
private String sort_third_Field;
/**
* @return the sort_first_Field
*/
public String getSort_first_Field() {
return sort_first_Field;
}
/**
* @param sort_first_Field the sort_first_Field to set
*/
public void setSort_first_Field(String sort_first_Field) {
this.sort_first_Field = sort_first_Field;
}
/**
* @return the sort_second_Field
*/
public String getSort_second_Field() {
return sort_second_Field;
}
/**
* @param sort_second_Field the sort_second_Field to set
*/
public void setSort_second_Field(String sort_second_Field) {
this.sort_second_Field = sort_second_Field;
}
/**
* @return the sort_third_Field
*/
public String getSort_third_Field() {
return sort_third_Field;
}
/**
* @param sort_third_Field the sort_third_Field to set
*/
public void setSort_third_Field(String sort_third_Field) {
this.sort_third_Field = sort_third_Field;
}
}
排序实现
package jp.co.hitachi.jkk.zaimu.player.kr; import java.util.Collections;
import java.util.Comparator;
import java.util.Vector; public class AVectorSort { /**
* @param args
*/
public static void main(String[] args) {
Vector<AVectorElement> vtElements = new Vector<AVectorElement>();
InstoVt(vtElements); // sort before print all elements
System.out.println("Sort Before:");
pfVtAllElement(vtElements); AVectorElement bkE = vtElements.firstElement();
vtElements.removeElementAt(0);
if (bkE == null) {
System.out.println("null!");
return;
}
Collections.sort(vtElements, new Comparator<AVectorElement>() { public int compare(AVectorElement ev1, AVectorElement ev2) { String[][] arrStr = new String[2][3]; arrStr[0][0] = convertNullToEmpty(ev1.getSort_first_Field());
arrStr[1][0] = convertNullToEmpty(ev2.getSort_first_Field()); arrStr[0][1] = convertNullToEmpty(ev1.getSort_second_Field());
arrStr[1][1] = convertNullToEmpty(ev2.getSort_second_Field()); arrStr[0][2] = convertNullToEmpty(ev1.getSort_third_Field());
arrStr[1][2] = convertNullToEmpty(ev2.getSort_third_Field()); if (arrStr[0][0].compareTo(arrStr[1][0]) > 0) {
return 1;
} else if (arrStr[0][0].compareTo(arrStr[1][0]) < 0) {
return -1; } else if (arrStr[0][1].compareTo(arrStr[1][1]) > 0) {
return 1;
} else if (arrStr[0][1].compareTo(arrStr[1][1]) < 0) {
return -1; } else if (arrStr[0][2].compareTo(arrStr[1][2]) > 0) {
return 1;
} else if (arrStr[0][2].compareTo(arrStr[1][2]) < 0) {
return -1;
} return 0;
}
});
// add first element backuped before sort
System.out.println("Sort After:");
vtElements.add(0, bkE);
// sort after ,print all elements
pfVtAllElement(vtElements);
} private static void InstoVt(Vector<AVectorElement> vtElements) {
AVectorElement e = null;
// first element is exclude
e = new AVectorElement();
e.setSort_first_Field("2029");
e.setSort_second_Field("1-070-000");
e.setSort_third_Field("1-070-000");
vtElements.add(e); e = new AVectorElement();
e.setSort_first_Field("2001");
e.setSort_second_Field("1-070-000");
e.setSort_third_Field("1-070-000");
vtElements.add(e); e = new AVectorElement();
e.setSort_first_Field("1001");
e.setSort_second_Field("1-070-000");
e.setSort_third_Field("1-070-000");
vtElements.add(e); e = new AVectorElement();
e.setSort_first_Field("1003");
e.setSort_second_Field("1-070-000");
e.setSort_third_Field("1-070-000");
vtElements.add(e); e = new AVectorElement();
e.setSort_first_Field("1002");
e.setSort_second_Field("1-080-000");
e.setSort_third_Field("1-070-000");
vtElements.add(e); e = new AVectorElement();
e.setSort_first_Field("1002");
e.setSort_second_Field("1-080-000");
e.setSort_third_Field("1-060-000");
vtElements.add(e); e = new AVectorElement();
e.setSort_first_Field("1002");
e.setSort_second_Field("1-070-000");
e.setSort_third_Field("1-070-000");
vtElements.add(e); e = new AVectorElement();
e.setSort_first_Field("");
e.setSort_second_Field("1-080-000");
e.setSort_third_Field("1-060-000");
vtElements.add(e); e = new AVectorElement();
e.setSort_first_Field("");
e.setSort_second_Field("");
e.setSort_third_Field("1-060-000");
vtElements.add(e); e = new AVectorElement();
e.setSort_first_Field("");
e.setSort_second_Field("");
e.setSort_third_Field("");
vtElements.add(e); e = new AVectorElement();
e.setSort_first_Field("");
e.setSort_second_Field("2-100-100");
e.setSort_third_Field("");
vtElements.add(e);
} private static void pfVtAllElement(Vector<AVectorElement> vtElements) {
for (AVectorElement e : vtElements) {
System.out.println("Field1: " + e.getSort_first_Field() + ", Field2:"
+ e.getSort_second_Field() + ", Field1:" + e.getSort_third_Field() + ".");
}
} private static String convertNullToEmpty(String aString) {
String ret = null;
try {
if (aString == null) {
return "";
}
return aString; } catch (Exception e) {
ret = null;
return ret;
}
}
}
排序结果:
Sort Before:
Field1: 2029, Field2:1-070-000, Field1:1-070-000.
Field1: 2001, Field2:1-070-000, Field1:1-070-000.
Field1: 1001, Field2:1-070-000, Field1:1-070-000.
Field1: 1003, Field2:1-070-000, Field1:1-070-000.
Field1: 1002, Field2:1-080-000, Field1:1-070-000.
Field1: 1002, Field2:1-080-000, Field1:1-060-000.
Field1: 1002, Field2:1-070-000, Field1:1-070-000.
Field1: , Field2:1-080-000, Field1:1-060-000.
Field1: , Field2:, Field1:1-060-000.
Field1: , Field2:, Field1:.
Field1: , Field2:2-100-100, Field1:.
Sort After:
Field1: 2029, Field2:1-070-000, Field1:1-070-000.(首元素不参与排序)
Field1: , Field2:, Field1:.
Field1: , Field2:, Field1:1-060-000.
Field1: , Field2:1-080-000, Field1:1-060-000.
Field1: , Field2:2-100-100, Field1:.
Field1: 1001, Field2:1-070-000, Field1:1-070-000.
Field1: 1002, Field2:1-070-000, Field1:1-070-000.
Field1: 1002, Field2:1-080-000, Field1:1-060-000.
Field1: 1002, Field2:1-080-000, Field1:1-070-000.
Field1: 1003, Field2:1-070-000, Field1:1-070-000.
Field1: 2001, Field2:1-070-000, Field1:1-070-000.
最新文章
- TFS API : 四、工作项查询
- eclipse项目上面有个红叉,但是没有任何地方有错误
- Hibernate SQL查询 addScalar()或addEntity()
- 介绍一些chrome 好用的插件和快捷键
- android开发练习:天气应用
- A python tool to static sim.log duration time
- POJ1845 Sumdiv(求所有因数和+矩阵快速幂)
- thinkPHP实现瀑布流的方法
- jquery()的三种$()
- 当执行php脚本时用户关闭浏览器会发生什么?
- Mvc学习笔记(3)
- 过滤器(Filter)
- linux下的文件权限
- 关于readonly
- Servlet源码初探
- POJ3621 Sightseeing Cows(最优比率环)
- [flutter+dart] windows7下开发环境的安装与配置
- sed命令参数之-r -i
- Quartz.net入门
- 【Matplotlib】利用Python进行绘图