[数据结构]串Set学习总结

Set介绍

   Set相对于List、Map是最简单的一种集合。集合中的对象不按特定的方式排序,并且没有重复对象。

特点:

  •  它不允许出现重复元素;
  • 不保证和政集合中元素的顺序
  • 允许包含值为null的元素,但最多只能有一个null元素

Set是一个接口,实例化Set可以采用下面的方式:

  • HashSet: HashSet类按照哈希算法来存取集合中的对象,存取速度比较快 
  • TreeSet :TreeSet类实现了SortedSet接口,能够对集合中的对象进行排序 

Set的基本操作:

  •  boolean add(Object o)   :向集合中加入一个对象的引用
  • void clear()                        :删除集合中所有的对象,即不再持有这些对象的引用
  • boolean isEmpty()           :判断集合是否为空
  • boolean contains(Object o): 判断集合中是否持有特定对象的引用
  • Iterartor iterator()              : 返回一个Iterator对象,可以用来遍历集合中的元素
  • boolean remove(Object o):从集合中删除一个对象的引用
  • int size()                               :返回集合中元素的数目
  • Object[] toArray()                 :返回一个数组,该数组中包括集合中的所有元素

    Set的使用

    添加数据

  • 复制代码
    Set<Integer> hashSet = new HashSet<Integer>();
     hashSet.add(3);
     hashSet.add(2);
     hashSet.add(5);
     hashSet.add(1);
     //模拟添加一个重复数据
     hashSet.add(2);
     Log.e(TAG,"set hashSet :"+hashSet+" size : "+hashSet.size());
    
     Set<Integer> treeSet = new TreeSet<>();
     treeSet.add(3);
     treeSet.add(2);
     treeSet.add(5);
     treeSet.add(1);
     Log.e(TAG,"set treeSet :"+treeSet +" size : "+treeSet.size());
    复制代码

    运行结果:

     通过运行结果可以看出,Set是不可重复的,TreeSet是有序的,HashSet是无序的。

    TreeSet实现排序默认是升序,想要实现自定义排序可以通过传进去一个Comparator或者TreeSet的添加对象实现Comparator接口。

    Set遍历

    for循环方式

      for (Integer integer :hashSet){
                Log.e(TAG,"set integer :"+integer);
       }

    迭代器方式

    Iterator<Integer> iterator =hashSet.iterator();
    while (iterator.hasNext()){
         Integer integer=iterator.next();
         Log.e(TAG,"set integer :"+integer);
       }

     

posted @   星宫奏  阅读(50)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示