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对排序最提供最基本支持。这两个接口不但可以用于集合元素排序,还可以用于数组排序。
/**
* @(#) Student.java Created on 2013-1-7
*
* Copyright (c) 2013 Aspire. All Rights Reserved
*/
package com.braver.test;
import java.util.Comparator;
/**
* The class <code>Student</code>
*
* @author ouyangfeng
* @version 1.0
*/
public final class Student {
private String name;
private int age;
/**
* Constructor
*
* @param name
* @param age
*/
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
/**
* Getter of name
*
* @return the name
*/
public String getName() {
return name;
}
/**
* Setter of name
*
* @param name
* the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* Getter of age
*
* @return the age
*/
public int getAge() {
return age;
}
/**
* Setter of age
*
* @param age
* the age to set
*/
public void setAge(int age) {
this.age = age;
}
/**
* {@inheritDoc}
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
final StringBuilder builder = new StringBuilder();
builder.append("name:").append(name).append(" age:").append(age);
return builder.toString();
}
public static final class StudentComparator implements Comparator<Student> {
/**关键点在这里
* {@inheritDoc}
*
* @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
*/
@Override
public int compare(Student o1, Student o2) {
// if (o1.getAge() < o2.age)
// return -1;
// else if (o1.getAge() == o2.getAge())
// return 0;
// else
// return 1;
return o1.getName().compareTo(o2.getName());
}
}
}
测试方法
/**
* @(#) StudentMain.java Created on 2013-1-7
*
* Copyright (c) 2013 Aspire. All Rights Reserved
*/
package com.braver.test;
import java.util.ArrayList;
import java.util.Collections;
import com.braver.test.Student.StudentComparator;
/**
* The class <code>StudentMain</code>
*
* @author ouyangfeng
* @version 1.0
*/
public final class StudentMain {
/**
* @param args
*/
public static void main(String[] args) {
Student student = new Student("aname1", 18);
Student student2 = new Student("dname2", 19);
Student student3 = new Student("bname3", 20);
ArrayList<Student> list = new ArrayList<Student>();
list.add(student);
list.add(student2);
list.add(student3);
Collections.sort(list, new StudentComparator());
for(Student stu : list){
System.out.println(stu);
}
}
}
分享到:
相关推荐
java对象排序
Java 对象排序详解 本文主要关注排序Collection的ArrayList、HashSet、TreeSet,以及最后但并非最不重要的数组。
Java对象排序中文排序SortedSet排序使用和源码讲解Java开发Java经验技巧共13页.pdf.zip
这里有几个关于java 对象排序的例子,很使用。
NULL 博文链接:https://anxingyu.iteye.com/blog/414927
小实例-实现对成绩总分由高到低的排序-Java中数组对象的排序
commons-beanutils-1.8.3.jar commons-collections-3.2.1.jar commons-logging-1.1.3.jar这三个包都是从apache官网下的,含源码、api文档
Java 对象属性map排序示例
天才之作:通过泛型,对List中对象多属性排序,支持设置各属性排序方式(动态属性),看了之后绝对让你震撼!
在C、C++中有很多排序算法,但是通常排序算法不得不让程序员在写代码的过程中陷入对底层很多指针和位置的理解,java不希望这样,所以排序大多可以由java帮你做掉,例如,你要对一个数组排序,通过:Collections.sort...
List对象排序通用方法List对象排序通用方法List对象排序通用方法List对象排序通用方法
java编写的排序包,实现了很好的扩展功能,对排序要求和排序方法的添加,实现思想不错
16.CompareObj.java 对象排序实现 17.SetAndList.java set的简单操作极其hashcode应用 18.Singleton.java java设计模式之单例模式 19.Factory.java 设计模式之工厂模式 20.Swing.java 介绍了java的图形应用 ...
java中通过键盘输入来实例化类对象数组,同时对类对象排序,希望初学java的同学们可以下载下学习下
1.可以对任何简单类型和任意对象进行排序 2.可以支持升序、降序、字典排序等多种顺序要求 3.可以随意增加排序算法和顺序要求,保证其他程序不修改 4.减少程序代码中逻辑上的冗余 5.至少用两种方案编程实现该程序包,...
java List排序工具类 使用示例: new OrderUtils().order(list, "name", OrderUtils.DESC); 相关实例代码: public static void main(String[] args) { List<Person> list = getData(); // 获取无序数据 new ...
java 对象集合按字段排序
可以实现多种排序方法的排序,应用面向对象思想
用户能够从终端选择三种排序算法中的一种,包括插入排序,堆排序,选择排序,同时被排序的数也可以通过键盘输入,不限制输入的数字的个数,运用了Java的面向对象的思想
NULL 博文链接:https://pridesnow.iteye.com/blog/1453660