要对集合中的对象的某属性进行排序有两种方式。
a. 一种是要排序对象类实现comparable接口的compareTo方法;然后把对象放入list;然后调用Collections.sort(list);
b. 一种是不对要排序对象类做任何改动,创建Comparator接口的实现类C;然后 把对象放入list;然后调用Collections.sort(list, C);
a.eg
----------------------------------
public class User implements Comparable<User>{
private String name;
private int age;
private int gender;
private String address;
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the age
*/
public int getAge() {
return age;
}
/**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
}
/**
* @return the gender
*/
public int getGender() {
return gender;
}
/**
* @param gender the gender to set
*/
public void setGender(int gender) {
this.gender = gender;
}
/**
* @return the address
*/
public String getAddress() {
return address;
}
/**
* @param address the address to set
*/
public void setAddress(String address) {
this.address = address;
}
/**
*
*/
public User() {
super();
}
/**
* @param name
* @param age
* @param gender
* @param address
*/
public User(String name, int age, int gender, String address) {
super();
this.name = name;
this.age = age;
this.gender = gender;
this.address = address;
}
@Override
public int compareTo(User o) {
if(o!=null){
if(this.getAge()>o.getAge()){
return 1;
}else if(this.getAge()==o.getAge()){
return 0;
}
}
return -1;
}
}
-------------------------------------------main
List<User> ulist = new ArrayList<User>();
ulist.add(new User("wangbo",29,1,"长沙"));
ulist.add(new User("wumei",44,1,"株洲"));
ulist.add(new User("zhangjie",19,1,"岳阳"));
ulist.add(new User("lihua",36,1,"长沙"));
ulist.add(new User("zhangchangzhe",19,1,"衡阳"));
Collections.sort(list);
for(User u:ulist){
System.out.println(u.getName()+"\t"+u.getAge()+"\t"+u.getAddress());
}
==============================================
b.eg
--------------------------------
public class User {
private String name;
private int age;
private int gender;
private String address;
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the age
*/
public int getAge() {
return age;
}
/**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
}
/**
* @return the gender
*/
public int getGender() {
return gender;
}
/**
* @param gender the gender to set
*/
public void setGender(int gender) {
this.gender = gender;
}
/**
* @return the address
*/
public String getAddress() {
return address;
}
/**
* @param address the address to set
*/
public void setAddress(String address) {
this.address = address;
}
/**
*
*/
public User() {
super();
}
/**
* @param name
* @param age
* @param gender
* @param address
*/
public User(String name, int age, int gender, String address) {
super();
this.name = name;
this.age = age;
this.gender = gender;
this.address = address;
}
}
------------------------------
import java.util.Comparator;
public class ComparatorImpl implements Comparator<User>{
@Override
public int compare(User o1, User o2) {
if(null!=o1 && null!=o2){
if(o1.getAge() >o2.getAge()){
return 1;
}else if(o1.getAge() ==o2.getAge()){
return 0;
}
}
return -1;
}
}
-----------------------------------main
List<User> ulist = new ArrayList<User>();
ulist.add(new User("wangbo",29,1,"长沙"));
ulist.add(new User("wumei",44,1,"株洲"));
ulist.add(new User("zhangjie",19,1,"岳阳"));
ulist.add(new User("lihua",36,1,"长沙"));
ulist.add(new User("zhangchangzhe",19,1,"衡阳"));
Collections.sort(ulist, new ComparatorImpl());
for(User u:ulist){
System.out.println(u.getName()+"\t"+u.getAge()+"\t"+u.getAddress());
}
转自:http://blog.csdn.net/jbgtwang/article/details/6952459
分享到:
相关推荐
要注意的是List,Set,Queue继承了Collection接口,...这里想用一个简单的例子展示一下他们的使用,内容包括:List、Map、Set、Queue,Collections、Comparable与Comparator,排序、搜索,内部类,泛型、重写equals、hashCode
实现Comparable接口或Comparator接口,用户可以根据需要对集合中的元素进行排序。为了方便用户使用,Java平台还提供了Collections和Arrays工具类。collection.rar分别对上述内容进行详细讲解演示。
Java 中集合框架的主要接口是什么? ArrayList 和 LinkedList 有什么区别? HashSet 和 TreeSet 有什么区别? HashMap 和 TreeMap 有什么区别? 什么是迭代器?如何使用它来遍历集合? 什么是 fail-fast 机制? 如何...
哈希值 LinkedHashSet TreeSet 自然排序Comparable 比较器排序Comparator Set集合 并发修改异常 LinkedList集合 ArrayList集合 List集合 Collection集合概述 冒泡排序 Object 异常 Math 包装类 Calendar类 ...
此外,实现此接口的对象可以用作有序映射中的键或有序集合中的集合,无需指定比较器。 此 接口只有一个方法compareTo,比较此对象与指定对象的顺序,如果该对象小 于、等于或大于指定对象,则分别返回负整数、零或正...
Lucene中的自定义排序功能和Java集合中的自定义排序的实现方法差不多,都要实现一下比较接口. 在Java中只要实现Comparable接口就可以了.但是在Lucene中要实现SortComparatorSource接口和ScoreDocComparator接口.在...
排序:Comparable Comparator Collections.sort() ArrayList:底层用数组实现的List 特点:查询效率高,增删效率低 轻量级 线程不安全 LinkedList:底层用双向循环链表 实现的List 特点:查询效率低,增删效率高 ...
在Java开发类库中,提供了很多工具类,我们即将学习最常见的工具类,比如对日期的操作,对集合的操作等。具体更多的工具类,请参考JavaDoc文档。 2. java.util.Date类 Date类包装了毫秒值,毫秒值表示自1970年1月1...
031113_【第11章:Java常用类库】_比较器(Comparable、Comparator)笔记.pdf 031114_【第11章:Java常用类库】_观察者设计模式笔记.pdf 031115_【第11章:Java常用类库】_正则表达式笔记.pdf 031116_【第11章:Java...
java 集合类的排序主要是用Collections.sort方法,Collections和Collection是不一样的,前者是类,后者是接口,在这里,我主要是想说明它的sort方法的几种类型, 提示:实现接口的方法时,只需要比较两个数,大的返回1,...
知道实现比较器(Comparable,Comparator)用于排序算法(多态性)。 [*]了解同步包装和不可修改包装。 第12章 IO与串行化 2课时 了解Java IO 中类的层次结构,介绍Java IO采用的装饰...
何时栈上创建,传递变量时候的按值传 递 Comparable 接口,Comparator类,用来做比较,主要是用于集合中,排序,插入等等 类初始化,变量初始化,静态变量,静态区,常量区等等 继承多态需要知道的有super, this, ...
排序: Guava 强大的 "fluent Comparator"比较器, 提供多关键字排序。 5. Throwable类: 简化了异常检查和错误传播。 二. 集合类:集合类库是 Guava 对 JDK 集合类的扩展, 这是 Guava 项目最完善和为人所知...
{13.8}java.util.Date与java.sql.Date比较}{200}{section.13.8} {13.9}Meta Data}{201}{section.13.9} {13.10}可滚动结果集}{201}{section.13.10} {13.11}Procedure}{201}{section.13.11} {14}xml}{204}{...
还有一个后缀,表示它是处理简单数据('Smpl')还是使用 Comparable 接口('Cpbl')或 Comparator 接口('Cptr')。 测试 每个算法通常有几个测试,它们证明排序输出的正确性,并且(对我个人而言)是显示优化行为...