Java(Comparable排序接口)


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);
		}
	}
}

结果截图:
在这里插入图片描述

注意:

小 于、等于或大于指定对象,则分别返回负整数、零或正整数。

// 从小到大 :this‐o
// 从大到小:o‐this


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM