Java Arraylist 如何使用 Comparator排序

Java Arraylist 如何使用 Comparator排序import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class Sort implements Comparator<String> {
private final static int UP = 1;

private final static int DOWM = -1;

private int state;

public Sort(int state) {
this.state = state;
}

public Sort() {

}

public int compare(String o1, String o2) {
if (state == Sort.DOWM) {
return sortDown(o1, o2);
}
return sortUp(o1, o2);
}

private int sortUp(String o1, String o2) {
if (o1.compareTo(o2) < 0) {
return -1;
} else if (o1.compareTo(o2) > 0) {
return 1;
} else {
return 0;
}
}

private int sortDown(String o1, String o2) {
if (o1.compareTo(o2) > 0) {
return -1;
} else if (o1.compareTo(o2) < 0) {
return 1;
} else {
return 0;
}
}

public static void main(String[] args) {
ArrayList<String> array = new ArrayList<String>();
array.add("000001");
array.add("000003");
array.add("000005");
array.add("000004");
array.add("000002");
Collections.sort(array, new Sort(Sort.DOWM));

for (String str : array) {
System.out.println(str);
}
}
}


==============

功能:ArrayList中放置他是HashMap对象,这时要对其中的所有对象做排序。

一、首先编写排序器

DataComparator.java

import Comparable.test1.Person;
import java.util.Comparator;
import java.util.HashMap;
import java.text.Collator;
import java.text.CollationKey;

public class DataComparator
implements Comparator {
Collator collator = Collator.getInstance(); //调入这个是解决中文排序问题
public int compare(Object obj1, Object obj2) {
HashMap map1 = (HashMap) obj1;
HashMap map2 = (HashMap) obj2;
String name1 = (String) map1.get("Name");
String name2 = (String) map2.get("Name");
CollationKey key1 = collator.getCollationKey(name1.toLowerCase());
CollationKey key2 = collator.getCollationKey(name2.toLowerCase());
return key1.compareTo(key2);
}
}

二、测试

ArrayListMapSortTest.java

import java.util.Collections;
import Comparable.ArrayListMapSort.DataComparator;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Iterator;
import java.util.Date;
import java.io.File;

public class ArrayListMapSortTest {

//列出文件夹下的文件及文件夹,不包括子文件夹中的文件和文件夹
public ArrayList listFoldersAndFiles(String path) {
File file = new File(path);
File[] list = file.listFiles();
ArrayList al = new ArrayList();
for (int i = 0; i < list.length; i++) {
//if (list[i].isDirectory())
// listFolder(list[i].getPath());
HashMap hm = new HashMap();
hm.put("Name", list[i].getName());
hm.put("Path", list[i].getPath());
hm.put("AbsolutePath", list[i].getAbsolutePath());
hm.put("Parent", list[i].getParent());
// hm.put("isAbsolute", list[i].isAbsolute());
// hm.put("isDirectory", list[i].isDirectory());
// hm.put("isFile", list[i].isFile());
// hm.put("isHidden", list[i].isHidden());
hm.put("lastModified",
new Date(list[i].lastModified()).toLocaleString());
al.add(hm);
//System.out.println(list[i].getName()+" 是文件夹:"+list[i].isDirectory());
}
return al;
}

public static void main(String[] args) {
ArrayListMapSortTest databean = new ArrayListMapSortTest();
ArrayList al = databean.listFoldersAndFiles("F:\\");
Collections.sort(al, new DataComparator());
for (int i = 0; i < al.size(); i++) {
HashMap hm = (HashMap) al.get(i);
for (Iterator iter = hm.entrySet().iterator(); iter.hasNext(); ) {
Map.Entry entry = (Map.Entry) iter.next();
Object key = entry.getKey();
Object val = entry.getValue();
System.out.print(key + " " + val + " ");
}
System.out.println();
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值