Java语言基础TreeSet集合

TreeSet

TreeSet是SortedSet接口的实现方法,TreeSet可以确保集合元素处于排序状态。TreeSet支持两种排序方法:自然排序和定制排序。其中自然排序是默认的,定制排序用于自定义的类的按照某种规则的排序(需要重写排序方法)。

实现
继承
继承
继承
TreeSet类
NavigableSet接口
SortedSet接口
Set接口
Collection接口

自然排序
排序方法调用compareTo()方法:
方法简述为

compare(Object obj){
	if(this>obj)
		return 1;
	else if(this=obj)
		return 0;
	else //this < obj 
		return -1;
}

注意:在用默认的自然排序,集合内必须放入同类型的对象,否则会发生类型转化错误。(可以用泛型规定集合内元素的类型)

例如:

Set<Integer> set = new TreeSet<Integer>();
		set.add(5);
		set.add(3);
		set.add(1);
		set.add(4);
		set.add(2);
		for(Integer i : set) {
			System.out.println(i);

输出:1 2 3 4 5

定制排序
例如,定义一个类为Person,其中包含name(String),age(int),排序方法按照年龄(age)的从小到大进行排序。

class Person implements Comparator<Person>{
	String name;
	int age;
	//无参构造,用于初始化和导入基准
	public Person() { 
		name = "null";
		age = -1;
		
	}
	//含参构造,用于定义对象的属性
	public Person(String name, int age) {
		this.name = name;
		this.age = age;
		
	}
	@Override // 重写的compare排序准则
	public int compare(Person o1, Person o2) {
		// TODO Auto-generated method stub
		if(o1.age > o2.age)
			return 1 ;
		else if(o1.age == o2.age)
			return 0;
		else
			return -1;
		
	}
}

接下来分别定义 p1,p2,p3,p4四位不同年龄(15,18,16,19)的对象,并导入TreeSet集合进行排序测试。

		Person p1 = new Person("p1",15);
		Person p2 = new Person("p2",18);
		Person p3 = new Person("p3",16);
		Person p4 = new Person("p2",19);
		
		Set<Person> set = new TreeSet<Person>(new Person());
		set.add(p1);
		set.add(p2);
		set.add(p3);
		set.add(p4);
		
		for(Person p : set) {
			System.out.println("name:" + p.name +"    age:"+p.age);
		}

结果输出:

name:p1 age:15
name:p3 age:16
name:p2 age:18
name:p2 age:19

说明:Set set = new TreeSet(new Person());
new Person()是为调用无参构造产生一个最开始的基准。

发布了10 篇原创文章 · 获赞 3 · 访问量 821

猜你喜欢

转载自blog.csdn.net/sdutxkszy/article/details/105454995
今日推荐