使用TreeSet时添加数据遇到的一些问题

1、当TreeSet对象为空时,添加第一个数据时第一条数据会自己与自己进行比价而非直接添加至TreeSet中

import java.util.TreeSet;

public class Test {

	public static void main(String[] args) {
		TreeSet<Person> set = new TreeSet<Person>();
		set.add(new Person("张三"));
	}
	
}
//创建一个类,让其继承Comparable类
class Person implements Comparable<Person>{
	String name;

	public Person() {
		super();
	}
	public Person(String name) {
		super();
		this.name = name;
	}

	@Override
	public int compareTo(Person o) {
		System.out.println("第一个数据进行了比较!");
		return 0;
	}
}

运行结果:

        程序添加第一条数据时如果是直接添加至TreeSet中则不会进行比较,即不会使用compareTo方法,而运行结果表明了在TreeSet为空时添加数据,数据会自行与自身进行比较。

2、TreeSet进行插入数据时,如果两条数据相同则将新传入的数据丢弃

3、类继承Comparable,重写compareTo方法,当新增数据时,是拿新增数据与原有数据进行比较,即compareTo的形参为已经插入的数据。

创建一个类并声明这个类的比较性

class Person implements Comparable<T>{
	String name;

	public Person() {
		super();
	}
	public Person(String name) {
		super();
		this.name = name;
	}
	@Override
	public String toString() {
		return "Person [name=" + name + "]";
	}

	@Override
	public int compareTo(Person o) {
		
		return 0;
	}
}

4、在常见TreeSet时如果类没有比较性,则需要指定比较器。

TreeSet<Person> set = new TreeSet<Person>(new Comparator<Person>() {

			@Override
			public int compare(Person o1, Person o2) {
				// TODO Auto-generated method stub
				return 0;
			}
		});

o1为现在正在插入的元素,o2为之前插入的元素

TreeSet的比较的形式与二叉排序树插入元素时插入元素的比较类似

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值