TreeSet实现类
package gather;
import java.util.Iterator;
import java.util.TreeSet;
/*
TreeSet的使用
存储结构:红黑树
*/
public class Demo09 {
public static void main(String[] args) {
//创建集合
TreeSet<String> treeSet = new TreeSet<>();
//1.添加元素
treeSet.add("xyz");
treeSet.add("abc");
treeSet.add("hello");
// treeSet.add("xyz");不能添加进去
System.out.println("元素个数"+treeSet.size());
System.out.println(treeSet);
//2.删除
// treeSet.remove(new String("xyz"));
// System.out.println("删除之后:"+treeSet); //能删除
//3.遍历
//3.1增强for
for (String string:treeSet) {
System.out.println(string);
}
//3.2使用迭代器
Iterator<String> it = treeSet.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
//4.判断
System.out.println(treeSet.contains("abc"));
}
}
package gather;
import java.util.Objects;
/*
人类
*/
public class Person implements Comparable<Person>{
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age &&
Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
//先按姓名比,然后再按年龄比
@Override
public int compareTo(Person o) {
int n1 = this.getName().compareTo(o.getName());
int n2 = this.age-o.getAge();
return n1==0?n2:n1;
}
}
package gather;
import java.util.Iterator;
import java.util.TreeSet;
/*
使用TreeSet保存数据
储存结构:红黑树
要求:元素必须要实现Comparable接口,comparable方法的返回值为0认为重复
*/
public class Demo10 {
public static void main(String[] args) {
//创建集合
TreeSet<Person> persons = new TreeSet<>();
//1.添加元素
Person p1 = new Person("刘德华",20);
Person p2 = new Person("林志玲",22);
Person p3 = new Person("郭富城",25);
persons.add(p1);
persons.add(p2);
persons.add(p3);
System.out.println(persons.size());//出现异常,没有比的标准,重写ComparaTo可以比较
System.out.println(persons);
//2.删除
persons.remove(new Person("郭富城",25));//能删除,比的是姓名和年龄
persons.remove(p1);
System.out.println(persons.size());
//3.遍历
//3.1增强for
for (Person person:persons) {
System.out.println(person);
}
//3.2使用迭代器
Iterator<Person> it = persons.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
//4.判断
System.out.println(persons.contains(new Person("林志玲", 22)));//能比较,判断姓名和年龄
System.out.println(persons.isEmpty());
}
}