首页 > 其他分享 >集合4 HashSet

集合4 HashSet

时间:2023-01-03 17:12:49浏览次数:45  
标签:set Hash HashSet add set1 集合 TODO

HashSet

底层实现是数组 + 链表

数据存放时的索引通过内部Hash算法确定 -- 增加数据是无序的

Hash算法 -- 索引相同时根据内容是否相同决定是否丢弃,内容不相同则采用链地址法处理冲突

内容比较的方法需要重写 hashCode() 和 equals() 方法

多线程中的线程池就用的HashSet -- 自动消除重复的数据,确保不会出现单个线程有多个entry,并且保持高效率。

基本操作

public class _HashSet {
    public static void main(String[] args) {

        //TODO Collection HashSet
        HashSet set = new HashSet();

        //TODO 增加数据
        set.add("as");
        set.add("if");
        set.add("go");
        set.add("no");
        set.add("no"); //不存储重复数据
        System.out.println(set); //[no, as, go, if]

        //TODO 没有修改方法,因为新旧数据在Hash算法中不一定使用同一索引
        //     只能先删除再增加
        //     .remove() 删除指定数据
        set.remove("go");

        //TODO 没有查询指定数据的方法 只能遍历
        for(Object obj:set){
            System.out.println(obj);
        }

        //TODO .addAll() 将另一个HashSet集合存入
        HashSet set1 = new HashSet();
        set1.add("hehe");
        set1.add("haha");
        set1.add("enen");
        set1.add("oooo");


        //子集合中每个数据都经过Hash算法确定索引,存放也是无序的
        set.addAll(set1);

        System.out.println(set); //[no, as, haha, oooo, hehe, if, enen]

        //TODO HashSet可以通过转换为数组实现索引查询
        Object[] objects = set.toArray();
        System.out.println(objects[4]); //hehe

        //TODO 判断是否为空、判断数据是否存在、克隆...

    }
}

标签:set,Hash,HashSet,add,set1,集合,TODO
From: https://www.cnblogs.com/Ashen-/p/17022811.html

相关文章

  • java集合Collection操作
    CollectionallCollections=newArrayList();//集合里添加数据allCollections.add("testName");//判断即合理是否包含某特定的数据if(al......
  • 总结HashSet和TreeSet的去重
    HashSet的去重添加的对象需要重写hashCode()和equals()方法,其中hashCode()方法,应该是根据自定义类对象的成员属性值计算得来,equals()方法,应该是比较自定义类对象的成员属......
  • 集合3 LinkedList
    LinkedList底层双向链表基础增删改查publicclass_LinkedList{publicstaticvoidmain(String[]args){//TODO集合-Collection-LinkedList=......
  • 集合1 Collection
    集合Collection数据的一种容器,用于容纳数据Java提供了完整的集合框架数组也是容器,为什么要使用集合?数组使用不方便数组索引范围由长度确定不能动态修改容量什......
  • 集合2 ArrayList
    ArrayListpublicclassList{publicstaticvoidmain(String[]args){//TODOArrayList:Array+List//List:列表,清单--按照数据插入......
  • L2-005 集合相似度
    L2-005 集合相似度 (25 分)给定两个整数集合,它们的相似度定义为:Nc/Nt×100%。其中Nc是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数。你的任务就......
  • java中的HashSet的add()方法解析
     HashSet的add()方法解析示例代码如下:【可用于后续的源码追踪】1publicclassHomeWork04{2publicstaticvoidmain(String[]args){3HashS......
  • 数据结构 玩转数据结构 7-9 Leetcode上更多集合和映射的问题
    0课程地址https://coding.imooc.com/lesson/207.html#mid=13711 1重点关注1.1结论3.1和3.2对比3.2空间复杂度优于3.1 3.3和3.4对比......
  • 当下适合男人用的智能手机集合-转
    哪些智能手机适合男人使用呢?哪些安卓手机具有男人气息呢?从低价位的1000到中高价位的4000均有推荐,有兴趣的朋友不妨考虑一下。 HTC7Trophy,也叫奖杯,WP7系统,1000......
  • 第十三章《集合》第5节:Map集合
    ​List、Set和Queue都是Collection接口的子接口,因此从更高层次来说它们属于统一类型的集合。Map接口也代表一种集合,但它不是Collection子接口,因此它属于另一种类型的集合。M......