TreeSet实现排序(一)

package cn.cp;
import java.util.Iterator;
import java.util.TreeSet;
//存入TreeSet集合中的元素是无序的,但有方法给它排序
//排序方式一:让元素自身具备比较性,需元素实现Comparable接口
//核心:重写Comparable接口的方法compareTo(Object obj)
//if (tea.age == this.age) //年纪相同时再按照姓名排序!!!
//         return this.name.compareTo(tea.name);
//因为String也类实现了此接口,当然就可以调用compareTo()方法
class Teacher implements Comparable {
	private int age;
	private String name;
	public Teacher(int age, String name) {
		this.age = age;
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public String getName() {
		return name;
	}
	@Override
	public String toString() {
		return "Teacher [age=" + age + ", name=" + name + "]";
	}
	@Override
	public int compareTo(Object obj) {//按照年纪排序
		Teacher tea = (Teacher) obj;
		if (tea.age < this.age) {
			return -1;
		}
		if (tea.age == this.age) {//年纪相同时再按照姓名排序!!!核心
			return this.name.compareTo(tea.name);
		}
		if (tea.age > this.age) {
			return 1;
		}
		return 0;
	}

}

public class TreeSetTest1 {
	public static void main(String[] args) {
        Teacher teac1=new Teacher(25, "lim");
        Teacher teac2=new Teacher(26, "uim");
        Teacher teac3=new Teacher(55, "zim");
        Teacher teac4=new Teacher(55, "mim");
        Teacher teac5=new Teacher(55, "cim");
        TreeSet treeSet=new TreeSet();
        treeSet.add(teac1);
        treeSet.add(teac2);
        treeSet.add(teac3);
        treeSet.add(teac4);
        treeSet.add(teac5);
        Iterator iterator=treeSet.iterator();
        while(iterator.hasNext()){
        	Teacher t=(Teacher) iterator.next();
        	System.out.println(t.getName()+"的年纪是"+t.getAge());
        }
	}
}
时间: 2024-09-21 01:52:48

TreeSet实现排序(一)的相关文章

通过枚举控制比较TreeSet内容排序(实现接口comparator);随机生成一个汉字

随机生成一个汉字 /** * 随机生成一个汉字 * @return * @throws UnsupportedEncodingException */ public static String createStr() throws UnsupportedEncodingException { String str = null; int hightPos, lowPos; // 定义高低位 Random random = new Random(); hightPos = (176 + Math.

java-Java TreeSet定制排序

问题描述 Java TreeSet定制排序 各位牛人,大家好! 我在练习TreeSet定制排序的时候.我发现在TreeSet构造函数里面定义一个Comparator的匿名内部类的实例,这个实例只需要实现compare这个方法就能运行.但是我看Comparator这个借口里面有两个方法,除了上面的那个还有一个equals.我比较好奇,内部类不需要实现接口的所有方法嘛?谢谢.下面是我的代码. import java.util.*; class R { int count; public R(int

java-Java中用TreeSet方法排序字符型数字怎么排序啊,求指教,谢谢

问题描述 Java中用TreeSet方法排序字符型数字怎么排序啊,求指教,谢谢 public class Demo implements Comparable{ //String str; String str; /*public Demo(){ }*/ public Demo(String str){ this.str=str; } public void getStr(String str){ this.str=str; } public String setStr(){ return st

TreeSet实现排序(二)

package cn.cp; import java.util.Comparator; import java.util.Iterator; import java.util.TreeSet; //TreeSet实现排序的第二种办法:让容器本身实现排序的功能 //因为TreeSet有一构造方法:TreeSet tr=new TreeSet(Comparator c); //其参数为实现了Comparator接口的类 // //总结: //在方法一中,要让对象本身具有可比性,所以implement

Java集合学习(十七) TreeSet详细介绍(源码解析)和使用示例

这一章,我们对TreeSet进行学习. 我们先对TreeSet有个整体认识,然后再学习它的源码,最后再通过实例来学会使用TreeSet. 第1部分 TreeSet介绍 TreeSet简介 TreeSet 是一个有序的集合,它的作用是提供有序的Set集合.它继承于AbstractSet抽象类,实现了NavigableSet<E>, Cloneable, java.io.Serializable接口. TreeSet 继承于AbstractSet,所以它是一个Set集合,具有Set的属性和方法.

java-ArrayList 和TreeSet排序问题

问题描述 ArrayList 和TreeSet排序问题 import java.util.*; public class Test { public static void main(String[] args) { Employee Allan = new Employee("Allan"); Employee Bell = new Employee("Bell"); Employee Chris = new Employee("Chris")

Java 容器 &amp; 泛型:三、HashSet,TreeSet 和 LinkedHashSet比较

上一篇总结了下ArrayList .LinkedList和Vector比较,今天泥瓦匠总结下Hash .LinkedList和Vector比较.其实大家都是Collection,只不过有点各自特性.那就是数据结构的不同表现.   一.Set回顾 一个不包括重复元素(包括可变对象)的Collection,是一种无序的集合.Set不包含满 a.equals(b) 的元素对a和b,并且最多有一个null. 泥瓦匠的记忆宫殿: 1.不允许包含相同元素 2.判断对象是否相同,根据equals方法   二.

泛型和TreeSet的应用(二)

package cn.us; import java.util.Comparator; import java.util.Iterator; import java.util.TreeSet; //泛型和TreeSet的应用(二) //TreeSet实现排序的第二种办法:让容器本身实现排序的功能 //因为TreeSet有一构造方法:TreeSet tr=new TreeSet(Comparator c); //其参数为实现了Comparator接口的类 // //总结: //在方法一中,要让对象

解决TreeSet类的排序问题_java

TreeSet支持两种排序方法:自然排序和定制排序.TreeSet默认采用自然排序. 1.自然排序 TreeSet会调用集合元素的compareTo(Object obj)方法来比较元素之间大小关系,然后将集合元素按升序排列,这种方式就是自然排序.(比较的前提:两个对象的类型相同). java提供了一个Comparable接口,该接口里定义了一个compareTo(Object obj)方法,该方法返回一个整数值,实现该接口的类必须实现该方法,实现了该接口的类的对象就可以比较大小.当一个对象调用