【Java基础】Collection子接口:Set


【Java基础】集合框架
【Java基础】Collection子接口:Set
【Java基础】Set接口的子类


Set接口

Set接口:一个不包含重复元素的 collection。

Set接口框架

|---Collection接口:单列集合,用来存储一个一个的对象;
    |---Set:存储无序的、不可重复的数据;  -->高中讲的“集合”
        |---HashSet:底层数据结构是哈希表;
                     作为Set接口的主要实现类;
                     线程不安全;可以存储null值;                     
            |---LinkedHashSet:底层数据结构是链表和哈希表;
                               作为HashSet的子类;
                               遍历其内部数据时,可以按照添加的顺序遍历;                               
        |---TreeSet:底层数据结构是红黑树;
                     可以按照添加对象的指定属性,进行排序;

Set接口的案例

1、存储字符串并遍历
import java.util.HashSet;
import java.util.Set;

public class SetDemo1 {
    public static void main(String[] args) {
        //创建集合对象
        Set<String> set = new HashSet<String>();
        //把字符串添加到集合
        set.add("hello");
        set.add("world");
        set.add("java");
        set.add("world");
         //遍历集合
         for (String s : set) {
             System.out.println(s);
        }
    }
}
2、存储自定义对象并遍历
//定义学生类Student-->省略

//测试类:
import java.util.HashSet;
import java.util.Set;

class SetDemo2 {
    public static void main(String[] args) {
        //创建集合对象
        Set<Student> set = new HashSet<Student>();
        //创建学生对象
        Student s1 = new Student("张三", 18);
        Student s2 = new Student("李四", 20);
        Student s3 = new Student("王五", 22);
        Student s4 = new Student("赵六", 24);
        Student s5 = new Student("张三", 18);
        Student s6 = new Student("李四", 22);
        //把学生添加到集合
        set.add(s1);
        set.add(s2);
        set.add(s3);
        set.add(s4);
        set.add(s5);
        set.add(s6);
        //遍历集合
        for (Student s : hs) {
            System.out.println(s.getName() + "," + s.getAge());
        }
    }
}

Set接口的子类

Set接口的子类的区别

  • HashSet:
    • 底层数据结构是哈希表
    • 对集合的迭代顺序不作任何保证
    • 元素唯一
      • 依赖hashCode()和equals()方法
  • LinkedHashSet:
    • 底层数据结构是链表和哈希表
    • 具有可预测的迭代次序
    • 元素有序唯一
      • 由链表保证元素有序
      • 由哈希表保证元素唯一
  • TreeSet:
    • 底层数据结构是红黑树
    • 能够对元素按照一定的规则进行排序
    • 元素排序
      • 自然排序
      • 比较器排序
    • 元素唯一
      • 根据比较的返回值是否是0来决定
开发时如何选用List接口的子类?
  • 具体看需求,不知道用哪个就选HashSet
  • 要排序:TreeSet
  • 不要排序:HashSet
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值