1. Set集合
1.1 Set集合概述
特征:
无序,不可重复
无序:添加顺序和存储顺序不一致,【不代表有排序效果】
不可重复: 在一个Set集合中不能出现相同元素
interface Set<E>
--| class HashSet<E> 底层是哈希表存储数据
--| class TreeSet<E> 底层存储数据是一个二叉树
1.2 HashSet
1.2.1 底层结构
package com.qfedu.b_set;
import java.util.HashSet;
public class Demo2 {
public static void main(String[] args) {
HashSet<Person> hashSet = new HashSet<Person>();
Person p1 = new Person(1, "宝哥", 10);
Person p2 = new Person(2, "大熊", 15);
Person p3 = new Person(3, "骚磊", 2);
Person p4 = new Person(4, "骚杰", -5);
Person p5 = new Person(5, "林妹妹", 11);
Person p6 = new Person(6, "康爷", 8);
Person p7 = new Person(6, "康牙", 10);
hashSet.add(p4);
hashSet.add(p6);
hashSet.add(p3);
hashSet.add(p5);
hashSet.add(p2);
hashSet.add(p1);
hashSet.add(p7);
System.out.println(hashSet);
}
}
1.3 TreeSet
1.3.1 Tree树形结构
1.3.2 TreeSet存储方式
没有比较方式无法存储
1.3.3 Comparable接口使用
interface Comparable<T> {
int compareTo(T t);
}
方法参数为T类型,由实现类遵从接口时约束,
compareTo方法,返回值类型int类型,0, 负数,正数
0 表示两个元素一致,如果在TreeSet中比较结果为0,表示同一个元素,无法存储第二个。
Comparable接口由存储元素对应的类遵从,完成该方法
1.3.4 Comparator接口使用
interface Comparator<T> {
int compare(T o1, T o2);
}
需要完成一个自定义比较器类对象,
int 返回值 0,负数,正数
0 表示两个元素一致,如果在TreeSet中比较结果为0,表示同一个元素,无法存储第二个。
1.3.5 Comparator使用要高于Comparable使用