• 26.集合框架-Set接口及其子类(2)[20220727]


    Collection接口之下有两个子接口:List接口/Set接口

    Set接口及其子类

    Set接口是用来处理无序的单列数据,没有重复的元素,重复的元素算一个。
    HashSet类--用来处理无序的单列数据,没有重复的元素,重复的元素算一个。
    LinkedHashSet类HashSet类的子类

    HashSet类

    HashSet是Set接口最常用的实现类,底层数据结构是哈希表,HashSet不保证元素的顺序但保证元素必须唯一。

    HashSet类构造方法:
    HashSet() 构造一个新的空集合; 默认初始容量(16)和负载因子(0.75)。 
    HashSet(Collection c) 构造一个包含指定集合中的元素的新集合。 
    HashSet(int initialCapacity) 构造一个新的空集合; 具有指定的初始容量和默认负载因子(0.75)。 
    HashSet(int initialCapacity, float loadFactor) 具有指定的初始容量和指定的负载因子。 

    1. package com.wangxing.test1;
    2. import java.util.ArrayList;
    3. import java.util.HashSet;
    4. import java.util.Set;
    5. public class TestHashSetClass {
    6. public static void main(String[] args) {
    7. //HashSet--java类--实现了Set接口
    8. //HashSet的构造方法
    9. //HashSet() 构造一个新的空集合; 默认初始容量(16)和负载因子(0.75)。
    10. HashSet hashset1=new HashSet();
    11. Set set1=new HashSet();
    12. //HashSet(Collection c) 将实现Conllection接口的子类转换成HashSet接口。
    13. ArrayList arrayList=new ArrayList();
    14. HashSet hashset2=new HashSet(arrayList);
    15. Set set2=new HashSet(arrayList);
    16. //HashSet(int initialCapacity) 构造一个新的空集合; 具有指定的初始容量和默认负载因子(0.75)。
    17. HashSet hashset3=new HashSet(26);
    18. Set set3=new HashSet(26);
    19. //HashSet(int initialCapacity, float loadFactor) 具有指定的初始容量和指定的负载因子。
    20. HashSet hashet4=new HashSet(30,0.5f);
    21. Set set4=new HashSet(30,0.5f);
    22. }
    23. }

    HashSet类实例方法
    boolean    add(Object e) 将指定的元素添加到此集合(如果尚未存在)。 
    void    clear() 从此集合中删除所有元素。 
    boolean    contains(Object o) 如果此集合包含指定的元素,则返回 true 。 
    boolean    isEmpty() 如果此集合不包含元素,则返回 true 。 
    Iterator    iterator() 返回此集合中元素的迭代器。 
    boolean    remove(Object o) 如果存在,则从该集合中删除指定的元素。 
    int    size() 返回此集合中的元素数(其基数)。 

    1. package com.wangxing.test1;
    2. import java.util.ArrayList;
    3. import java.util.HashSet;
    4. import java.util.Iterator;
    5. public class TestHashSetClass2 {
    6. public static void main(String[] args) {
    7. HashSet hashset=new HashSet();
    8. //HashSet类中的常用实例方法
    9. //boolean add(Object e) 将指定的元素添加到此集合(如果尚未存在)。
    10. hashset.add("hello");
    11. hashset.add(true);
    12. hashset.add(12.5);
    13. hashset.add("hello");
    14. hashset.add(1234);
    15. //int size() 返回此集合中的元素数(其基数)。
    16. System.out.println("size=="+hashset.size());
    17. //boolean contains(Object o) 如果此集合包含指定的元素,则返回 true 。
    18. System.out.println("contains=="+hashset.contains("hello"));
    19. //boolean remove(Object o) 如果存在,则从该集合中删除指定的元素。
    20. //hashset.remove("hello");
    21. //System.out.println("size=="+hashset.size());
    22. //void clear() 从此集合中删除所有元素。
    23. //hashset.clear();
    24. //boolean isEmpty() 如果此集合不包含元素,则返回 true 。
    25. //System.out.println("isEmpty=="+hashset.isEmpty());
    26. //遍历HashSet无序集合
    27. //HashSet无序集合不能使用普通的for循环,因为HashSet中没有与位置相关的操作方法
    28. //普通的for需要get(int index)方法,HashSet无序集合中没有这个方法
    29. //因此不能使用普通的for循环遍历HashSet
    30. //如果一定要使用普通的for循环遍历HashSet的无序集合?
    31. //可以使用ArrayList/LinkedList的构造方法,将HashSet这个无序集合转换成有序集合
    32. ArrayList arraylist=new ArrayList(hashset);
    33. for(int i=0;i
    34. System.out.println("普通的for循环遍历HashSet==="+arraylist.get(i));
    35. }
    36. //使用增强的for循环遍历HashSet无序集合
    37. for(Object obj:hashset){
    38. System.out.println("增强的for循环--"+obj);
    39. }
    40. //Iterator iterator() 返回此集合中元素的迭代器。
    41. Iterator iterator=hashset.iterator();
    42. while(iterator.hasNext()){
    43. Object obj=iterator.next();
    44. System.out.println("迭代器遍历HashSet集合==="+obj);
    45. }
    46. }
    47. }

    LikedHashSet类

    LikedHashSet类是HashSet类的子类

    LinkedHashSet也是Set接口的实现类,底层数据结构是链表和哈希表,哈希表用来保证元素唯一,链表用来保证元素的插入顺序,即FIFO(First Input First Output 先进先出)。

    LikedHashSet类构造方法:
    LikedHashSet() 构造一个新的空集合; 默认初始容量(16)和负载因子(0.75)。 
    LikedHashSet(Collection c) 构造一个包含指定集合中的元素的新集合。 
    LikedHashSet(int initialCapacity) 构造一个新的空集合; 具有指定的初始容量和默认负载因子(0.75)。 
    LikedHashSet(int initialCapacity, float loadFactor) 具有指定的初始容量和指定的负载因子。 

    LikedHashSet类实例方法
    boolean    add(Object e) 将指定的元素添加到此集合(如果尚未存在)。 
    void    clear() 从此集合中删除所有元素。 
    boolean    contains(Object o) 如果此集合包含指定的元素,则返回 true 。 
    boolean    isEmpty() 如果此集合不包含元素,则返回 true 。 
    Iterator    iterator() 返回此集合中元素的迭代器。 
    boolean    remove(Object o) 如果存在,则从该集合中删除指定的元素。 
    int    size() 返回此集合中的元素数(其基数)。

    LikedHashSet类是HashSet类的子类,在构造方法和实例方法的使用是相似的因为此处就不用继续提供代码操作。

    LinkedHashSet与HashSet区别?

     HashSet是Set接口最常用的实现类,底层数据结构是哈希表,HashSet不保证元素的顺序但保证元素必须唯一。
    LinkedHashSet也是Set接口的实现类,底层数据结构是链表和哈希表,哈希表用来保证元素唯一,链表用来保证元素的插入顺序,即FIFO(First Input First Output 先进先出)。

  • 相关阅读:
    [libglog][FFmpeg] 如何把 ffmpeg 的库日志输出到 libglog里
    面向对象编程(一)
    C语言之const
    linux后台开发面试题
    测试用例设计方法之场景设计法
    GreenPlum DB向GBase迁移_REAL类型
    【2024_CUMCM】熵权TOPSIS方法
    C++线程锁读写rtsp视频流
    学习pytorch12 神经网络-线性层
    有点奇怪!访问目的网址,主机能容器却不行
  • 原文地址:https://blog.csdn.net/guizhaiteng/article/details/126018010