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));
}
分享到:
相关推荐
java 对象集合按字段排序
java集合某个字段按照中文拼音排序 java集合某个字段按照中文拼音排序
对集合中的对象进行排序,例如:List中存放了User对象,则可根据User对象的某一个属性进行顺序or倒序的排序
1,HashMap底层维护一个数组,我们向HashMap中所放置的对象实际上是存储在该数组当中; 2,当向HashMap中put一对键值时,它会根据key的hashCode值计算出一个位置,该位置就是此对象准备往数组中存放的位置。 ...
JAVA泛型源代码实现以下功能:返回数组元素的最大值/最小值下标;判断数组元素是否按升序排列;T对象数组排序;二分法查找key元素;
java中按找对象的某个属性进行升序降序的排序
14、JAVA集合框架之list接口、LinkedList类、ArrayList类、Vector类 15、JAVA集合框架之Set接口、HashSet类、TreeSet类 16、JAVA集合框架之Map接口、HashMap类、Trelap类、Hashtable类 17、JAVA异常Exception 18...
主要介绍了JAVA像SQL一样对List对象集合进行排序的实现方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
java版本List中对象多属性排序.rar
主要介绍了Java实现储存对象并按对象某属性排序的几种方法,结合实例形式详细分析了Java储存对象并按对象某属性排序的具体实现方法与操作注意事项,需要的朋友可以参考下
定制排序:在创建TreeSet集合对象时,并提供一个Comparator接口实现类对象与该TreeSet集合关联, 由Comparator实现类对象负责集合元素的排序逻辑。 // 自定义比较器 class MyTreeSetCompartor implements...
/*集合的多级排序,列入几个学生对象进行考试,先按总成绩的大小排序, 如果总成绩相同的情况下,按照平时成绩进行排序*/
下面小编就为大家分享一篇java根据List内对象的属性排序方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
集合框架是一个用来代表和操纵集合的统一架构。...算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现。
要注意的是List,Set,Queue继承了Collection接口,Map和Collection无关,但他们都是接口,不能直接实例化对象。这里想用一个简单的例子展示一下他们的使用,内容包括:List、Map、Set、Queue,Collections、Comparable...
集合:大小可变的序列,只能存放对象 集合和数组的区别: 1.集合是大小可变的序列,数组在声明后,长度不可变 2.数组只能存放声明时指定的一种数据类型,集合可变存放多种数据类型 3.数组可以存放基本数据类型,...
Java集合容器面试题(2023最新版)-重点 **集合框架:**用于存储数据的容器。 集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。 任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合...
* 方法: public PockerCard() //无参构造函数: 创建牌的集合、创建两个角色对象 * public void initializeCard() //创建整幅扑克牌 * public void showCard() //显示单支牌的花色和点数 * public void ...
第13章 Java集合类 13.1 Set(集) 13.1.1 Set的一般用法 13.1.2 HashSet类 13.1.3 TreeSet类 13.1.4 向Set中加入持久化类的对象 13.2 List(列表) 13.3 Map(映射) 13.4 小结 13.5 思考题 第14...
主要介绍了java 中List按照date排序的实现的相关资料,需要的朋友可以参考下