在开发中,我们可能会遇到需要将一些对象有序的放入到集合中,这时候我们只需要让类实现java.lang.Comparable<T>接口,并覆盖
compareTo这个方法即可实现自动排序。下面给出例子,一个类Student类,一个测试类TestComparable,下面给出代码:
Studnet类:
public class Student implements Comparable{
private int id;
private String name;
private int sex;
public Student(int id, String name, int sex) {
super();
this.id = id;
this.name = name;
this.sex = sex;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
@Override
public int compareTo(Object o) {
int result = 0; //返回对比结果 0为相等,负整数为小于,正整数为大于
if(o instanceof Student) {
Student student = (Student)o;
if(student.getId() > this.id) {
return -1;
} else if (student.getId() < this.id) {
return 1;
}
}
return result;
}
}
TestComparable类:
import java.util.HashMap;
public class TestComparable {
private static HashMap<Integer, Student> studentMap;
public static void main(String[] args) {
loadStudent();
for(Student student : studentMap.values()) {
System.out.println("ID:" + student.getId() + " NAME:" + student.getName() + " SEX:" + student.getSex());
}
}
private static void loadStudent() {
studentMap = new HashMap<Integer, Student>();
//请无视我对学生的命名吧。。。。毕竟用来测试的 呵呵
Student student0 = new Student(2, "张二", 0);
Student student1 = new Student(4, "张四", 1);
Student student2 = new Student(6, "张六", 1);
Student student3 = new Student(1, "张一", 0);
Student student4 = new Student(3, "张三", 0);
Student student5 = new Student(8, "张八", 1);
Student student6 = new Student(9, "张九", 0);
Student student7 = new Student(7, "张七", 1);
Student student8 = new Student(0, "张零", 0);
Student student9 = new Student(5, "张五", 0);
studentMap.put(student0.getId(), student0);
studentMap.put(student1.getId(), student1);
studentMap.put(student2.getId(), student2);
studentMap.put(student3.getId(), student3);
studentMap.put(student4.getId(), student4);
studentMap.put(student5.getId(), student5);
studentMap.put(student6.getId(), student6);
studentMap.put(student7.getId(), student7);
studentMap.put(student8.getId(), student8);
studentMap.put(student9.getId(), student9);
studentMap.put(student0.getId(), student0);
}
}
打印结果:
ID:0 NAME:张零 SEX:0
ID:1 NAME:张一 SEX:0
ID:2 NAME:张二 SEX:0
ID:3 NAME:张三 SEX:0
ID:4 NAME:张四 SEX:1
ID:5 NAME:张五 SEX:0
ID:6 NAME:张六 SEX:1
ID:7 NAME:张七 SEX:1
ID:8 NAME:张八 SEX:1
ID:9 NAME:张九 SEX:0
其他无序集合也可以使用此接口,注意对于TreeMap是无效的哦!
感谢您的光临,有什么不对的地方还请高手指出!谢谢!
分享到:
相关推荐
Report Machine 2.6<br>===================<br><br>这是一个报表控件包,For Borland Delphi Versions 3,4,5,6,7.100% 源码.<br><br>最后更新日期:2002.10.11<br><br>目录<br>-----<br> 说明<br> 特点<br> 最后...
泛型类型:定义泛型类型时,使用尖括号<>,并在尖括号中指定类型参数。...例如,public static <T extends Comparable<T>> T max(T[] array)表示一个返回最大元素的泛型方法,且元素类型必须实现Comparable接口。
例如,以下是Comparable<T>接口的定义: public interface Comparable<T> { int compareTo(T o); } Comparable<T>接口中定义了一个compareTo方法,这个方法是它所描述的需求。若我们想调用Arrays.sort...
第5 版 清华大学出版社<br> “SCJP学习指南” 人民邮电出版社<br> “Java 编程思想” 第3版 机械工业出版社<br> 教学内容和要求<br>知识点 重要程度 使用频度 难度<br>Java 入门 高 中 易<br>变量和运算符 高 ...
Java泛型概念 Java泛型是一种在编译时进行类型检查和类型推断的机制,它可以让我们编写更加通用、可重用的代码,提高了代码的可读性和可维护性,同时保证了类型...例如,List<E>就是一个泛型类,Comparable<T>就是一个
java.lang.Comparable和java.util.Comparator是两个容易混淆的接口,两者都带有比较的意思,那么两个接口到底有什么区别,分别在什么情况下使用呢? Comparable Comparable是java.lang包下面的接口,lang包下面可以...
template<>,藉此告訴編譯器哪些符號是 型別參數( type parameters),如圖 8。 template <typename T> class Rect : public Shape 侯捷觀點 JDK 1.5的泛型實現(Generics in JDK 1.5)7 { ...
"<major>.<minor>.<tiny>.<patch>" [ < major> , < minor> , < tiny> , < patch> ] 安装 将此行添加到应用程序的Gemfile中: gem "version_compare" 然后执行: $ bundle 或将其自己安装为: $ gem install ...
AATree<Comparable>::AATree( const Comparable & notFound ) : ITEM_NOT_FOUND( notFound ) { nullNode = new AANode<Comparable>; nullNode->left = nullNode->right = nullNode; nullNode->level = 0; ...
【IT十八掌徐培成】Java基础第12天-02.TreeSet实现与Comparable接口.zip
计算机后端-Java-Java核心基础-第22章 常用类 22. 自定义类实现Comparable自然排序.avi
1.什么是Comparable接口 此接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它的自然比较方法 。实现此接口的对象列表(和数组)可以通过 Collections.sort ...
接口回调 用哥德巴赫猜想来总结,哥德巴赫猜想就是要去输入一个偶数,输出这个偶数能被分解为哪两个质数的和,具体实现...接口起到了两个作用,一是隔离,使用者和实现者中间有了接口来作为隔离,不必串行完成,可以并
来自java.lang.Comparable。Comparable是 排序接口。若一个类实现了Comparable接口,就意味着该类支持排序。实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。 此外...
包含的匹配器所有匹配器都是为实现Temporal和Comparable<T>所有内容定义的。between(start, end) 如果日期/时间介于其他两个日期/时间之间(包括 ) ,则匹配。 例如: LocalDateTime start = LocalDateTime . of( ...
public interface Sequence<T> extends Iterable<T> { // Adds the element t at the rear of the sequence. public void add(T t); // The objects from s are added at the rear of the sequence // (in the...
用法稳定的: <dependency><groupId>com.kcthota</groupId><artifactId>version4j</artifactId><version>4.0</version></dependency>例子解析版本尝试将字符串解析为版本对象。 如果无法解析String,则抛出...
Java8HashMap键与Comparable接口编程开发技术共3页.pdf.zip
public final class MyString implements Comparable<MyString>, java.io.Serializable { private final char[] value; //字符数组,私有最终变量,只能赋值一次 public MyString() //构造空串"",串长度
当且仅当要使用的对象实现Comparable接口时,我们也可以创建不带Comparator对象的SortedList。 用法 我们将像创建Java中的任何ArrayList一样创建SortedList: SortedList<Integer> sortedlist = new SortedList...