HashSet

作者: 蚂蚁绊倒象 | 来源:发表于2019-01-24 16:20 被阅读10次

HashSet是Set接口的实现类,储存的是无序、唯一的对象。由于是无序的所以每组数据都没有索引,很多list可用的方法他都没有,凡是需要通过索引来进行操作的方法都没有,所以也不能使用普通for循环来进行遍历,只有加强型for和迭代器两种遍历方法。

主要方法
add():只有set中尚未包含指定元素,则添加指定元素返回true,否则添加失败返回false。
remove():如果指定元素存在于此 set 中,则将其移除。底层使用HashMap的remove方法删除指定的Entry。
contains():判断某个元素是否存在于set中。
clone():调用返回这个集合的浅表副本。

示例代码:

    HashSet<String> set = new HashSet<>();
    set.add("a");
    set.add("b");
    set.add("c");
    set.add("c");//之前有则添加会失败
    set.add("是否包含c:"+set.contains("c"));
    set.add("d是否在集合中:"+"d".equals(set));
    Iterator<String> iterator = set.iterator();
    while (iterator.hasNext()) {
        String next = iterator.next();
        LogU.i("MainActivity -->", "TreeSet: " + set.size() + " : " + next + ",hashcode值为:" + next.hashCode() + "");
    }
    //HashSet<String> cloneset = new HashSet<String>();
    HashSet cloneset = (HashSet) set.clone();
    System.out.println("原数据:" + set);
    System.out.println("克隆数据:" + cloneset);

打印结果:

TreeSet: 5 : d是否在集合中:false,hashcode值为:97196323
TreeSet: 5 : a,hashcode值为:97
TreeSet: 5 : b,hashcode值为:98
TreeSet: 5 : 是否包含c:true,hashcode值为:3569038
TreeSet: 5 : c,hashcode值为:99
原数据:[false, a, b, true, c]
克隆数据:[a, false, b, c, true]

试题:找到字符串中第一个重复出现的字符

    private char getChar(String str) {
        HashSet hashSet = new HashSet();
        char[] chars = str.toCharArray();
        for (int i = 0; i < str.length(); i++) {
            if (!hashSet.add(chars[i])) {
                //添加失败,说明之前已经存在了
                return chars[i];
            }
        }
        return 0;
    }

相关文章

  • java8中hashset源码分析

    分析大纲 hashset实现原理 hashset代码分析 1. hashset实现原理 hashset存储无序,不...

  • HashSet的用法

    java集合——HashSet的用法 一、HashSet的构造 二、HashSet添加元素 三、遍历HashSet...

  • HashSet, LinkedHashSet源码

    目录 HashSet LinkedHashSet HashSet 对于HashSet而言,它是基于HashMap实...

  • Set解析

    概览 上图为HashSet,LinkedSet,TreeSet对比 HashSet 可见HashSet其实就是实现...

  • Java集合之HashSet源码分析

    阅读目录 一、HashSet简介 二、HashSet源码分析 三、HashSet的应用示例代码

  • HashMap 和 HashSet 区别

    看过 HashSet 源码的人就应该知道:HashSet 底层就是基于 HashMap 实现的。(HashSet ...

  • android get external sd card pat

    public static HashSet getExternalMounts() { final HashSet...

  • 聊聊gost的HashSet

    序 本文主要研究一下gost的HashSet HashSet gost/container/set/hashset...

  • HashSet源码分析

    HashSet HashSet概述### HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)...

  • HashSet详解

    引用 java中HashSet详解 Java 编程下 HashSet 存入相同元素的原理 1.向HashSet 集...

网友评论

      本文标题:HashSet

      本文链接:https://www.haomeiwen.com/subject/zccujqtx.html