一个关于Comparator的使用例子
来源:互联网 发布:东京物语 知乎 编辑:程序博客网 时间:2024/05/18 08:42
这两天项目需要用到一个排序,分别对应4个项目,所以写了一个Comparator类。
代码如下:
import java.util.Comparator;
/**
* www.webkkk.net
* @author webkkk
*
*/
public class TestComparator implements Comparator {
public int compare(Object arg0, Object arg1) {
String[] strF = ((String) arg0).split("_");
String[] strL = ((String) arg1).split("_");
int len = strF.length;
if (len == 1) {
return Integer.parseInt(strF[0]) - Integer.parseInt(strL[0]);
}
for (int i = 0; i < len; i++) {
if (!strF[i].equals(strL[i])) {
return Integer.parseInt(strF[i]) - Integer.parseInt(strL[i]);
} else {
String strNF = getSubValue(strF, i);
String strNL = getSubValue(strL, i);
return compare(strNF, strNL);
}
}
return 0;
}
public String getSubValue(String[] strObj, int nPast) {
String strReturn = "";
for (int i = 1 + nPast; i < strObj.length; i++) {
strReturn = strReturn + "_" + strObj[i];
}
return strReturn.substring(1);
}
}
然后写一个调用类:
public class Test {
public static void main(String args[]) throws Exception{
String[] st = {"2_2_107_11","4_1_3_8","1_1_103_3","1_2_103_2","1_1_105_1","2_1_107_5","2_2_107_6","3_1_107_4","2_1_107_10"};
TestComparator tc = new TestComparator();
Arrays.sort(st, tc);
for (int i=0;i < st.length;i ++) {
System.out.println(st[i]);
}
}
这个类就算完成了,结果如下:
1_1_103_3
1_1_105_1
1_2_103_2
2_1_107_5
2_1_107_10
2_2_107_6
2_2_107_11
3_1_107_4
4_1_3_8
- 一个关于Comparator的使用例子
- 关于Comparator的使用
- 关于Comparator的使用
- 一个关于server使用 aidl的例子
- 关于ColorBox使用的一个简单例子
- 一个关于类别(category)使用的例子
- 一个不错的关于sql数组的使用例子
- 关于checkboxtree选中的一个小例子非常使用
- C 关于位段使用的一个简单例子
- 一个关于Timer()的例子..
- 一个关于异常的例子
- 关于多线程的一个例子
- 关于TabHost的一个例子
- 关于list的一个例子
- 关于Berkeley的一个例子
- 关于allocator的一个例子
- 关于ListActivity的一个例子
- 关于CSS的一个例子
- SyntaxHighlighter:很优秀的代码着色工具
- aspnet_regiis命令详解
- 查找--遍历二叉树
- 验证字符串的JavaScript代码
- 作业
- 一个关于Comparator的使用例子
- 今天啥都没干,用visio画了一天用例图
- 25 种能马上改善网站、提高浏览量的方法
- [转]P2P之UDP穿透NAT的原理与实现 - 增强篇(附修改过的源代码)
- C#中对Web.config配置文件的操作(增删改读)
- Serializable在C#中的作用.NET 中的对象序列化
- css
- 知知者知知,不知者不知,无知者不要知
- 字符串压缩和解压