HashSet快速介绍

399 篇文章 12 订阅

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;
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值