要求实现:

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.

Vector 多字段排序的Java实现的更多相关文章

  1. Java 多字段排序Comparator(兼容Date,Integer,Doubel,Long)

    Java 反射类:ReflexUtil public class ReflexUtil { static Logger logger = LoggerFactory.getLogger(ReflexU ...

  2. java的list集合如何根据对象中的某个字段排序?

    转自:http://blog.csdn.net/wangjuan_01/article/details/51351633 List集合按某个字段排序 package wjtest_01; import ...

  3. JAVA实现按列表中元素的时间字段排序

    JAVA代码实现按列表中元素的时间字段排序 导语: 工作中遇到一个问题,调用第三方接口返回的数据没有按时间倒序排列,测试说要加,然后在网上找到一个解决办法,这里记录一下 需求: 如下图列表,按生日进行 ...

  4. ElasticSearch java API 按照某个字段排序

    searchRequestBuilder.addSort("publish_time", SortOrder.DESC); 按照某个字段排序的话,hit.getScore()将会失 ...

  5. java实现按对象某个字段排序,排序字段和规则自定义

    @SuppressWarnings({ "unchecked", "rawtypes" }) private <T> void sort(List& ...

  6. 在Java中使用Collections.sort 依据多个字段排序

    一.如何使用Collections工具类进行排序 使用Collections工具类进行排序主要有两种方式: 1.对象实现Comparable接口,重写compareTo方法 /** * @author ...

  7. ElasticSearch7.3学习(二十二)----Text字段排序、Scroll分批查询场景解析

    1.Text字段排序 场景:数据库中按照某个字段排序,sql只需写order by 字段名即可,如果es对一个text field进行排序,es中无法排序.因为文档入倒排索引表时,分词存入,es无法知 ...

  8. PHP 二维数组根据某个字段排序

    二维数组根据某个字段排序有两种办法,一种是通过sort自己写代码,一种是直接用array_multisort排序函数 一. 手写arraysort PHP的一维数组排序函数: sort  对数组的值按 ...

  9. 对文本行按特定字段排序(前N个字符或后N个字符),TCPL 练习5-17

    The C programming language 的关于文本行排序的问题有很多种要求的方式,在对每行的字段排序方面,最简单的是例如对前N个字符或者末位N个字符进行排序,更高一点的要求是,对特殊符号 ...

随机推荐

  1. 奇妙的音乐-----WriteUp

    据说flag就藏在这段音乐中,请仔细听. 格式:CTF{} 解题链接:http://ctf5.shiyanbar.com/crypto/123.zip 下载压缩包后里面有个音乐的zip文件  但是加密 ...

  2. 聊聊用CSS3来玩立方体

    声明:本文为原创文章,如需转载,请注明来源WAxes,谢谢! 虽然现在很多浏览器都还不支持css3的3D转换,不过估计也已经有很多人都有玩css3的3D了......所以我这篇也就相当于水一下了,哈哈 ...

  3. bzoj 4033

    树形DP,dp[i][j]表示i子树中,选了j个白点,i子树中所有边的贡献. /************************************************************ ...

  4. Html的学习随笔

    在<head>的<style>中定义样式,有#号,比如#header就是定义一种名为header的样式,后面用id=header来调用:而无#号,比如直接就是header,那后 ...

  5. 【JavaScript代码实现四】获取和设置 cookie

    // 创建cookie function setCookie(name, value, expires, path, domain, secure) { var cookieText = encode ...

  6. Struts2 JSONObject的使用

    一.jar包 使用之前必须引入所须要的jar包,这里包含Struts2和JSONObject各自所必须的 Struts2: commons-fileupload-1.2.1.jarcommons-io ...

  7. UVA LIVE-3263 - That Nice Euler Circuit

    画一个顶点为偶数的封闭的二维图,当然.这个图能够自交,给出画的过程中的一些轨迹点.求出这个图把二次元分成了几部分,比如三角形把二次元分成了两部分. 这个的话,有图中顶点数+部分数-棱数=2的定律,这是 ...

  8. How to check Ubuntu version

    Below you can find some tips on how to check Ubuntu version you are currently running. The first pla ...

  9. CSS之BFC、IFC、FFC and GFC

    CSS之BFC.IFC.FFC and GFC 什么是FC? BFC(Block Formatting Contexts) BFC的布局规则: 如何生成BFC: IFC(Inline Formatti ...

  10. mysql查询null异常:attempted to return null from a method with a primitive return type

    select sum(deposit_amount)from tb_commission_ib_day mysql查询时报异常: attempted to return null from a met ...