1
、
Java API
针对集合类型排序提供了两种支持:
java.util.Collections.sort(java.util.List)
java.util.Collections.sort(java.util.List,
java.util.Comparator)
第一个方法要求所排序的元素类必须实现
java.lang.Comparable
接口。第二个方法要求实现一个
java.util.Comparator
接口。
java.lang.Comparable
接口和
java.util.Comparator
接口是
Java
对排序最提供最基本支持。这两个接口不但可以用于集合元素排序,还可以用于数组排序。如果数组或集合元素是
String
类型,则可以利用
Java API
实现的
Comparator<String>
对象
String.CASE_INSENSITIVE_ORDER
为容器元素排序。
2
、例子一:实现
Comparable
接口排序
public class Cat implements Comparable<Cat>{
private int age;
private String name;
… …
public int compareTo(Cat o) {
return this.getAge() - o.getAge();
}
}
List<Cat> listCat = new ArrayList<Cat>();
Cat cat1 = new Cat(34, "hehe"); listCat.add(cat1);
Cat cat2 = new Cat(12, "haha"); listCat.add(cat2);
Cat cat3 = new Cat(23, "leizhimin"); listCat.add(cat3);
Cat cat4 = new Cat(13, "lavasoft"); listCat.add(cat4);
Collections.sort(listCat); //排序
Collections.sort(listCat, Collections.reverseOrder()); //逆序
Collections.reverse(listCat); //再次逆序
String[] strArray = new String[] {"z", "a", "C"};
List<String> list = Arrays.asList(strArray); //数组转换为列表
String[] strArrayNew1 = list.toArray(strArray); //列表转换为数组
Collections.sort(list, String.CASE_INSENSITIVE_ORDER);
3
、例子二:实现
Comparator
接口排序
public class Person {
private int age;
private String name;
… …
}
-----------------------------------------------------------------------------
//通过Comparator接口实现个性化排序测试
public class PersonComparator implements Comparator<Person> {
/**排序接口算法实现*/
public int compare(Person o1, Person o2) {
return o1.getAge() - o2.getAge();
}
List<Person> listPerson = new ArrayList<Person>();
Person person1 = new Person(34, "lavasoft"); listPerson.add(person1);
Person person2 = new Person(12, "lavasoft"); listPerson.add(person1);
Person person3 = new Person(23, "leizhimin"); listPerson.add(person1);
Person person4 = new Person(13, "sdg"); listPerson.add(person1);
Comparator<Person> ascComparator = new PersonComparator();
Collections.sort(listPerson, ascComparator);
最后说明一下,
Java
如何通过所实现接口的方法进行排序是
API
内部的事情,
Java
这样处理排序目的就是对容器元素排序有一个统一的方式,以简化编程。
3
、
HashMap
按照键值
Key
排序
Map map = new HashMap();
mp.put("4", "a");
mp.put("2", "b");
mp.put("1", "c");
mp.put("3", "d");
-----------------------------------------------------------------------------
方法一:
Oject[] key = map.keySet().toArray();
Arays.sort(key);
-----------------------------------------------------------------------------
方法二:
Lst arrayList = new ArrayList(map.entrySet());
Cllections.sort(arrayList, new Comparator(){
public int compare(Object arg1, Object arg2) {
Map.Entry obj1 = (Map.Entry) arg1;
Map.Entry obj2 = (Map.Entry) arg2;
return (obj1.getKey()).toString().compareTo(obj2.getKey());
}
});
//将HASHMAP中的数据排序
for (Iterator iter = arrayList.iterator(); iter.hasNext();) {
Map.Entry entry = (Map.Entry)iter.next();
String key = (String)entry.getKey();
System.out.println(map.get(key));
}
分享到:
相关推荐
SortDemo.java 排序示例 travelTwoDime.java 遍历二维数组 traversing.java 遍历一维数组 useStrBuf.java 使用StringBuffer示例 useString.java 使用String示例 YanghuiTri.java 构造和显示杨辉三角 第6章 ...
│ 164个完整Java代码.zip │ J2EE综合--Struts常见错误的全面汇总.txt │ java程序员面试资料.zip │ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+...
Java集合简介 使用List 编写equals方法 使用Map 编写equals和hashCode 使用EnumMap 使用TreeMap 使用Properties 使用Set 使用Queue 使用PriorityQueue 使用Deque 使用Stack 使用Iterator 使用...
利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该类...
利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该类...
A.1.3 传递和使用Java对象 A.1.4 JNI和Java违例 A.1.5 JNI和线程处理 A.1.6 使用现成代码 A.2 微软的解决方案 A.3 J/Direct A.3.1 @dll.import引导命令 A.3.2 com.ms.win32包 A.3.3 汇集 A.3.4 编写回调函数 A.3.5 ...
A.1.3 传递和使用Java对象 A.1.4 JNI和Java违例 A.1.5 JNI和线程处理 A.1.6 使用现成代码 A.2 微软的解决方案 A.3 J/Direct A.3.1 @dll.import引导命令 A.3.2 com.ms.win32包 A.3.3 汇集 A.3.4 编写回调函数 A.3.5 ...
在Java开发类库中,提供了很多工具类,我们即将学习最常见的工具类,比如对日期的操作,对集合的操作等。具体更多的工具类,请参考JavaDoc文档。 2. java.util.Date类 Date类包装了毫秒值,毫秒值表示自1970年1月1...
A.1.3 传递和使用Java对象 A.1.4 JNI和Java违例 A.1.5 JNI和线程处理 A.1.6 使用现成代码 A.2 微软的解决方案 A.3 J/Direct A.3.1 @dll.import引导命令 A.3.2 com.ms.win32包 A.3.3 汇集 A.3.4 编写回调函数 A.3.5 ...
第11章 集合 4课时 理解什么是集合以及Java的集合框架。 辨析List,Set和Map接口。 • 理解List接口,辨别使用List接口的实现类。 • 理解Set接口,辨别使用Set接口的实现类。...
最近正在学习Java,也买了很多的有关Java方面的书籍,其中发现《跟我学Java》这本书,都的很不错啊,所以顺便拿电脑把这本书的目录敲了下来,与大家分享。尤其是那些和我一样初学Java的朋友们,看看哪一节对你有用,...
│ 164个完整Java代码.zip │ J2EE综合--Struts常见错误的全面汇总.txt │ java程序员面试资料.zip │ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+...
A.1.3 传递和使用Java对象 A.1.4 JNI和Java违例 A.1.5 JNI和线程处理 A.1.6 使用现成代码 A.2 微软的解决方案 A.3 J/Direct A.3.1 @dll.import引导命令 A.3.2 com.ms.win32包 A.3.3 汇集 A.3.4 编写回调函数 A.3.5 ...
JAVA.IO包相关流对象用法总结(尚学堂1002班王鑫) 165 IO中其他常用类 165 File类 165 RandomAccessFile 166 思考作业 166 上机作业 166 提高课外作业 166 第九章 多线程技术 167 基本概念 167 程序 167 进程 167 ...
A.1.3 传递和使用Java对象 A.1.4 JNI和Java违例 A.1.5 JNI和线程处理 A.1.6 使用现成代码 A.2 微软的解决方案 A.3 J/Direct A.3.1 @dll.import引导命令 A.3.2 com.ms.win32包 A.3.3 汇集 A.3.4 编写回调函数 A.3.5 ...
│ 164个完整Java代码.zip │ J2EE综合--Struts常见错误的全面汇总.txt │ java程序员面试资料.zip │ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+...
A.1.3 传递和使用Java对象 A.1.4 JNI和Java违例 A.1.5 JNI和线程处理 A.1.6 使用现成代码 A.2 微软的解决方案 A.3.1 @dll.import引导命令 A.3.2 com.ms.win32包 A.3.3 汇集 A.3.4 编写回调函数 A.3.5 其他J/Direct...
(2)在测试类中生成多个学生类的对象,放入 TreeSet 中,要求按照 3 门课总成绩从高到低 排序,总成绩相等按学号排序。输出排序结果。 注意实现 Comparator 接口的 compare(Object obj1,Object obj2)函数。 4.以 ...