集合框架第22天(TreeSet的定义及使用,Comparable接口方法重写)
TreeSet
- 基于排列顺序实现元素不重复
- 实现了SortedSet接口,对集合元素自动排序
- 元素对象的类型必须实现Comparable接口,指定排序规则
- 通过CompareTo方法确定是否为重复元素
TreeSet简单使用(存储简单类型)
//创建集合
TreeSet<String> treeSet=new TreeSet<String>();
//1.添加元素
treeSet.add("xyz");
treeSet.add("abc");
treeSet.add("hello");
System.out.println("元素个数"+treeSet.size());
System.out.println(treeSet.toString());
// //2.删除元素
// treeSet.remove("abc");
// System.out.println(treeSet.toString());
//3.遍历
//增强for
System.out.println("-----增强for-----");
for (String st:treeSet
) {
System.out.println(st);
}
//迭代器
System.out.println("-----迭代器-----");
Iterator<String> it= treeSet.iterator();
while (it.hasNext())
{
System.out.println(it.next());
}
//4判断
System.out.println(treeSet.contains("abc"));
System.out.println(treeSet.isEmpty());;

TreeSet使用(存储复杂类型数据)
存储结构:红黑树
要求:元素必须实现Comparable接口,重写CompareTo()方法,CompareTo()方法的返回值为0,则认为是重复元素-----或者在创建集合的时候就使用Comparator
重写如下:
@Override
public int compareTo(Person o) {
int n1=this.getName().compareTo(o.getName());
int n2=this.age-o.getAge();
return n1==0?n2:n1;

接下来就可以正常使用了
//创建集合
TreeSet<Person> pers=new TreeSet<Person>();
//添加元素
//1,添加数据
Person p1 = new Person("张三", 22);
Person p2 = new Person("李四", 23);
Person p3 = new Person("王五", 20);
pers.add(p1);
pers.add(p2);
pers.add(p3);
System.out.println("集合个数:"+pers.size());
System.out.println(pers.toString());
// //2,删除
// pers.remove(p2);
// System.out.println(pers.toString());
//3,遍历
//增强for循环
System.out.println("-----增强for-----");
for (Object ob:pers
) {
System.out.println(ob);
}
//迭代器
System.out.println("-----迭代器-----");
Iterator<Person> it=pers.iterator();
while (it.hasNext())
{
System.out.println(it.next());
}
//4,判断
System.out.println(pers.contains(p2));
System.out.println(pers.isEmpty());


浙公网安备 33010602011771号