初始TreeSet

TreeSet是Set集合中的一种,它的底层是使用了二叉树数据结构实现的,对集合中的元素进行排序存储。
使用TreeSet需要注意的事项有以下三点:
1、往TreeSet中添加元素的时候,如果元素具备自然排序的特点,那么TreeSet会根据元素的自然排序特性进行排序存储。
2、往TreeSet中添加元素的时候,如果元素不具备自然排序的特点,那么元素所属的类就必须实现Comparable接口,要比较的规则定义在CompareTo()方法上
3、往TreeSet中添加元素的时候,如果元素不具备自然排序的特点,元素所属的类也没有实现Comparable接口,那么在创建TreeSet对象的时候必须要传入比较器对象。比较器对象定义为:class 类名 implement Comparator{}
下面就这三种特点,分别给出代码说明:
package com.test;

import java.util.Comparator;
import java.util.TreeSet;

public class DemoOne {
@SuppressWarnings(“unchecked”)
public static void main(String[] args) {
//元素具备自然顺序特点
TreeSet treeSet=new TreeSet();
treeSet.add(1);
treeSet.add(2);
treeSet.add(3);
treeSet.add(4);
System.out.println(treeSet);
//元素实现了Comparable接口,并重写了compareTo()方法
TreeSet personSet=new TreeSet<>();
personSet.add(new Person(1,”xiaoming1”));
personSet.add(new Person(2,”xiaoming2”));
personSet.add(new Person(3,”xiaoming3”));
personSet.add(new Person(4,”xiaoming4”));
System.out.println(personSet);
//元素自带比较器,注意在初始化集合的时候,要带入比较器
TreeSet studentSet = new TreeSet(new Student.StudentComparator());
studentSet.add(new Student(1, “xiaoming1”));
studentSet.add(new Student(2, “xiaoming2”));
studentSet.add(new Student(3, “xiaoming3”));
studentSet.add(new Student(4, “xiaoming4”));
System.out.println(studentSet);
}
}

/Person这个类是实现了Comparable接口,在将Person放入TreeSet集合中的时候,进行排序存储/
class Person implements Comparable{
int id ;
String name ;
public Person(int id, String name) {
super();
this.id = id;
this.name = name;
}
@Override
public String toString() {
return “编号为:”+id+”,姓名为:”+name;
}
@Override
public int hashCode() {
return this.id;
}
@Override
public boolean equals(Object obj) {
Person person = (Person) obj;
return this.id == person.id;
}
@Override
public int compareTo(Person o) {
if(this.id < o.id){//升序排列
return -1;
}
return 1;
}
}
/类Student中是自带一个比较器对象,将Student对象放入TreeSet集合中时,要初始化这个比较器(TreeSet studentSet = new TreeSet(new Student.StudentComparator())),这样在存储元素的时候会调用比较器中的compare()方法,对元素进行排序/
class Student {
int id;
String name;
public Student(int id, String name) {
super();
this.id = id;
this.name = name;
}
@Override
public String toString() {
return name+”的学号为:”+id;
}
static class StudentComparator implements Comparator {
@Override
public int compare(Student o1, Student o2) {
if(o1.id

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值