HashSet类常用方法总结

1、分支

HashSet属于Collection集合的set分支下的子类(Collection集合分支图可参考博客:ArrayList常用方法总结

2、创建HashSet对象

语法格式:

HashSet<数据类型> 变量名 = new HashSet<数据类型>();

思考:如何实现创建HashSet类型对象?

我们可以从源码角度出发,Ctrl+“单击HashSet”打开Hashset无参构造方法所在的HashSet.class类,找到相应源码如下:

public HashSet() {
    map = new HashMap<>();
}

 我们可以发现,其底层原理是创建了HashMap对象并赋给全局变量map。

关于HashMap的详细分析可参考博客:HashMap常用方法总结


3、引包

在使用HashSet的方法前需要引入import java.util.HashSet包。

 

HashSet常用方法

1、add(Object obj):向Set集合中添加元素,添加成功返回true,否则返回false

import java.util.HashSet;
 
public class Test {
 
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<String>();
        set.add("Tom");
        set.add("Jim");
    }
}

但要注意,HashSet集合中存储的数据没有顺序


思考:使用add方法向HashSet集合中添加元素怎么实现?

我们可以从源码角度出发,Ctrl+“单击add”打开add方法所在的HashSet.class类,找到相应源码如下:

public boolean add(E e) {
    return map.put(e, PRESENT)==null;
}

其中add方法中的参数“e”代表“Tom”或者“Jim”;常量PRESENT的值赋为“null”

可以看出add方法实质上是map全局变量调用了HashMap的put方法,将数据“Tom”存到了map的key中。

(由于HashMap的key值不允许重复,所以HashSet添加的元素也不允许重复。)

↓↓↓

详细分析add()方法底层实现可参考:分析HashMap实现类中add()方法的底层代码


注意:由于HashSet集合的元素无序,因此不能用常规for循环来遍历,此时需要使用for-each循环。

import java.util.HashSet;
 
public class Test {
 
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<String>();
        set.add("Tom");
        set.add("Jim");
        for (String name : set) {
            System.out.println(name);
        }
    }
}

2、iterator() :返回在此Set中的元素上进行迭代的迭代器

import java.util.HashSet;
import java.util.Iterator;

public class Test {
 
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<String>();
        set.add("Tom");
        set.add("Jim");
        Iterator<String> iterator = set.iterator();//创建Iterator<>对象
	while(iterator.hasNext()) {
	    System.out.println(iterator.next());
	}
    }
}

3、size() :返回Set集合中的元素个数

import java.util.HashSet;
 
public class Test {
 
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<String>();
        set.add("Tom");
        set.add("Jim");
        System.out.println(set.size());//打印set集合中元素个数
    }
}

4、isEmpty() :如果Set不包含元素,则返回 true ,否则返回false

import java.util.HashSet;
 
public class Test {
 
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<String>();
        set.add("Tom");
        set.add("Jim");
        System.out.println(set.isEmpty());//显示set集合是否为空
    }
}

5、clear() : 移除此Set中的所有元素

import java.util.HashSet;
 
public class Test {
 
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<String>();
        set.add("Tom");
        set.add("Jim");
        set.clear();//清除集合set中所有元素
        System.out.println(set.size());//显示清除所有元素后集合元素个数是否为0
    }
}

6、contains(Object o):如果Set包含指定的元素,则返回 true,否则返回false

import java.util.HashSet;
 
public class Test {
 
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<String>();
        set.add("Tom");
        set.add("Jim");
        boolean flag = set.contains("Tom");//将contains()判断结果赋给flag
        System.out.println(flag);//显示集合是否含有“Tom”元素,有的话输出true
    }
}

7、remove(Object  obj) : 删除Set集合中的元素,删除成功返回true,否则返回false

由于HashSet集合中元素无需,因此不能Hashset的方法中不包含remove(int index),因为无法返回被除去的值。

import java.util.HashSet;
 
public class Test {
 
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<String>();
        set.add("Tom");
        set.add("Jim");
        boolean flag = set.remove("Tom");//将set集合中“Tom”元素除去并将是否成功的布尔值赋给flag
        System.out.println(flag);//显示是否去除成功
        System.out.println(set.size());//检验是否成功
    }
}

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值