要对集合中的对象的某属性进行排序有两种方式。
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
分享到:
相关推荐
总结来说,Java中的List可以通过自定义Comparator或者利用泛型和方法引用来实现对象多属性的动态排序。这种技术在处理复杂数据结构时非常有用,使得代码更加简洁且易于维护。通过学习和实践这部分内容,开发者可以...
在Java编程中,对象数组排序是一项常见的任务,特别是在处理复杂数据结构时。当我们需要根据对象的多个属性进行排序时,情况会变得稍微复杂。本文将深入探讨如何在Java中实现这个功能,结合给出的标签“源码”和...
在Java编程语言中,Comparable和Comparator接口是两个非常重要的组件,它们主要用来进行对象的比较和排序。了解它们之间的区别对于提升代码的可维护性和灵活性至关重要。 Comparable接口来源于java.lang包,它定义...
在这个“java版本List中对象多属性排序.rar”压缩包中,我们可能找到了一个关于如何在Java中实现此类排序的示例或教程。 首先,让我们理解基本概念。在Java中,`List`接口是`Collection`框架的一部分,它允许我们...
在Java编程语言中,Comparable和Comparator接口是两个重要的概念,它们都用于对象的排序,但有着不同的使用场景和特点。本文将深入探讨这两个接口的区别,以及它们在实际开发中的应用。 首先,我们来了解一下...
在Java编程语言中,`Comparable`接口和`Comparator`接口是两种重要的排序机制,它们用于对集合中的对象进行比较和排序。理解它们的区别对于任何Java开发者来说都是至关重要的。 首先,`Comparable`接口位于`java....
要注意的是List,Set,Queue继承了Collection接口,...这里想用一个简单的例子展示一下他们的使用,内容包括:List、Map、Set、Queue,Collections、Comparable与Comparator,排序、搜索,内部类,泛型、重写equals、hashCode
Java集合某个字段按照中文拼音排序是Java开发中经常遇到的问题。对Java集合中的某个字段按照中文拼音排序可以使用多种方法,本文将介绍两种常见的方法。 方法一:使用Comparable接口 在Java中,我们可以使用...
`Comparator`接口是Java集合框架中的一个重要工具,对于理解和掌握数据结构的排序功能至关重要。通过深入理解并熟练运用`Comparator`,可以提高代码的可读性和可维护性,更好地满足实际编程中的需求。
在Java编程语言中,Comparable和Comparator接口用于对对象进行比较和排序。这两个接口在很多情况下都能派上用场,但它们的应用场景和实现方式有所不同。 首先,Comparable接口是排序接口,意味着一个类如果实现了...
在Java编程语言中,排序是常见的操作,而`Comparable`和`Comparator`接口则是实现对象排序的两种主要方式。这篇文章将深入探讨这两种实现方式及其在实际编程中的应用。 首先,`Comparable`接口位于`java.lang`包下...
这篇博客“List中保存对象,按对象中某一属性排序【含程序源码】”恰好提供了这样的解决方案。下面我们将深入探讨这个主题。 首先,让我们理解列表(List)和对象排序的基本概念。列表是Java集合框架的一部分,它允许...
在Java编程语言中,Comparable和Comparator是两个非常重要的接口,它们都用于对象的比较和排序。下面是关于这两个接口的详细解释: **Comparable接口** Comparable接口位于`java.lang`包下,它是一个对象自比较的...
在Java集合框架中,`Collections.sort()`方法可以对List类型的集合进行排序。如果列表元素实现了`Comparable`接口,它会自动排序。如果列表元素是自定义对象,那么`compareTo()`方法将决定排序规则。 3. **...
Java集合框架中的`List`接口和数组(Array)是两种常用的数据结构,它们在处理数据时各有优势。下面我们将深入探讨如何在Java中实现集合的分组与排序。 1. **集合分组**: 集合分组通常涉及到`GroupingBy`操作,这...
当我们需要对一个集合或数组中的非数值类型对象进行排序,或者需要根据对象的多个属性进行复杂排序时,Comparator 就派上了用场。 Comparator 接口有一个核心方法 `compare(T o1, T o2)`,这个方法返回一个整数值,...
Java 中的 Comparable 和 Comparator 是两个常用的接口,用于实现对象的比较和排序。它们都是 Java 中的接口,都是用于比较对象的大小的,但它们有所不同。 Comparable 接口 Comparable 接口位于 java.lang....
- **定义**:`Comparator<T>`接口是Java集合框架的一部分,用于比较两个对象的顺序。 - **实现**:为了实现基于特定属性的排序,通常需要创建一个实现了`Comparator`接口的类,并重写其中的`compare`方法。示例...