Java(Comparable排序接口)

开发工具与关键技术:MyEclipse 10,java
作者:郭珮云

Java(Comparable排序接口)
Java要保存数量不确定的数据,保存据有映射关系的数据(关联数据),java提供了集合类。
集合类可以保存、盛装其他数据,所以集合类也称为容器类。全部的集合类都位于java.util包下。它和数组不一样,数组既可以是基本类型的值,也可以是对象(真正保存的是对象的引用变量);而集合只能保存对象(只是保存对象的引用变量,简单理解集合保存的是对象)

Comparable是排序接口。如果一个类实现Comparable接口,那么该类就支持 排序。实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或 Arrays.sort进行自动排序。
此外,实现此接口的对象可以用作有序映射中的键或有序集合中的集合,无需指 定比较器。
此接口只有一个方法compare,比较此对象与指定对象的顺序,如果该对象小 于、等于或大于指定对象,则分别返回负整数、零或正整数。
public class fghjnfg {
public static void main(String[] args){
List persons = new ArrayList();
persons.add(new Comparables(“一”, 3));//add新增元素
persons.add(new Comparables(“二”, 2));
persons.add(new Comparables(“三”, 2));
persons.add(new Comparables(“四”, 1));
persons.add(new Comparables(“五”, 3));
persons.add(new Comparables(“六”, 3));
persons.add(new Comparables(“七”, 4));
···
Collections.sort(persons);
//使用迭代器遍历输出列表数据:Iterator
//返回按适当顺序在列表的元素上进行迭代的迭代器。
Iterator iterator = persons.iterator();
while (iterator.hasNext()) {//判断是否有下一个元素
Comparables persion = iterator.next();
System.out.println(persion.getName()+"----"+persion.getAge());//输出结果
}
}
}
// 首先实现接口Comparable
class Comparables implements Comparable {
private int age;//这里定义成员变量
private String name; //这里定义成员变量
public Comparables() {//构造器
}
public Comparables(String name, int age){//有形参构造器
this.name = name;
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
···
//实现compareTo方法 o 表示和当前对象比较的另外一个对象
public int compareTo(Comparables o) {
// return this.age ‐ o.age;这里是ags年龄从小到大
// 从小到大 :this‐o
// 从大到小:o‐this
//比较方法升级:先根据年龄排序,如果年龄一样,根据姓名排序
if (this.age!=o.age) {
return this.age - o.age;
} else {
return this.name.compareTo(o.name);
}
}
}
结果截图:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44565782/article/details/89371730