java中能够排序的工具类和接口共有五个SortedMap 、SortedSet、TreeMap 、TreeSet和Collections,Collections中须要显式调用sort()方法。 java
事例以下:api
import java.util.List; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import myUtil.myArrayComparator; import java.util.Map; import java.util.HashMap; import java.util.TreeMap; import java.util.Collection; import java.util.Iterator; import myUtil.myMapComparator; public class mySort { public mySort() { } /** * 数组的中文排序 */ public void arraySort() { String[] sortArray = {"中山", "汕尾", "广州", "汕头", "阳江"}; Arrays.sort(sortArray); for (int i = 0; i < 5; i++) { System.out.println( (String) sortArray[i]); }
//结果排序为:中山,广州,汕头,汕尾,阳江。按照每一个单词最后一个字母的降序进行排列。数组
String[] reverseArray = {"中山", "汕尾", "广州", "汕头", "阳江"}; Collections.reverse(Arrays.asList(reverseArray)); for (int i = 0; i < 5; i++) { System.out.println( (String) reverseArray[i]); }
//结果排序为:阳江,汕头,广州,汕尾,中山。Coleections的反序(reverse)是指单词进行首末对换dom
//按照中文第一个字母升序排列的实现工具
import java.text.Collator; import java.util.Arrays; import java.util.Comparator; public class test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Comparator<Object> com=Collator.getInstance(java.util.Locale.CHINA); String[] newArray={"中山","汕头","广州","安庆","阳江","南京","武汉","北京","安阳","北方"}; Arrays.sort(newArray,com); for(String i:newArray){ System.out.print(i+" "); } } }
//结果的排序为:安庆 安阳 北方 北京 广州 南京 汕头 武汉 阳江 中山code
public void listSort(){ List sortList=new ArrayList(); sortList.add("中山"); sortList.add("汕尾"); sortList.add("广州"); sortList.add("汕头"); sortList.add("阳江"); myArrayComparator comparator = new myArrayComparator(); Collections.sort(sortList,comparator); for(int i=0;i<sortList.size();i++){ //由于ArrayList实现的是RandomAccess 随机访问接口。使用get()要比迭代的效率高。 //若是实现的是SequenceAccess(顺序访问接口。如:LinkList),使用迭代的效率高。 System.out.println(sortList.get(i)); }
//结果的排序为:广州,汕头,汕尾,阳江,中山。
//也可使用Object[] listToArray=sortList.toArray();转换成数组后再进行排序排序
Object[] listToArray=sortList.toArray(); Arrays.sort(listToArray, comparator); for (int i = 0; i < listToArray.length; i++) { System.out.println( (String) listToArray[i]); }
//结果的排序为:广州,汕头,汕尾,阳江,中山。
接口
public void mapSort(){ // 按照键值排序 myArrayComparator comparator = new myArrayComparator(); Map sortMap= new TreeMap(comparator); sortMap.put("中山", "a"); sortMap.put("广州", "b"); sortMap.put("潮州", "c"); //注意:每次对TreeMap进行put()时,TreeMap都会自动调用它的compare(key,Entry.key) //按照key进行排序 Collection col = sortMap.keySet(); Iterator it = col.iterator(); while (it.hasNext()) { System.out.println(it.next()); } }
//排序结果是:潮州,广州,中山。
public static void main(String[] args){
mySort mysort=new mySort();
//看看数组的中文排序
mysort.arraySort();
//看看链表的中文排序
mysort.listSort();
//看看map的中文排序
mysort.mapSort();
}
}字符串
//重写compare方法get
package myUtil; import java.util.Comparator; import java.text.Collator; import java.text.CollationKey; public class myComparator implements Comparator { //关于Collator。 private Collator collator = Collator.getInstance();//点击查看中文api详解 public myComparator() { } /** * compare * 实现排序。 * @param o1 Object * @param o2 Object * @return int */ public int compare(Object o1, Object o2) { //把字符串转换为一系列比特,它们能够以比特形式与 CollationKeys 相比较 CollationKey key1=collator.getCollationKey(o1.toString());//要想不区分大小写进行比较用o1.toString().toLowerCase() CollationKey key2=collator.getCollationKey(o2.toString()); return key1.compareTo(key2);//返回的分别为1,0,-1 分别表明大于,等于,小于。要想按照字母降序排序的话 加个“-”号 } }