HashSet分析——刷题常用

本文介绍了Java HashSet的基本概念,包括其去重特性、常用方法如add(), contains(), remove()和size()的应用。通过实战算法题演示如何利用HashSet判断数组重复元素。
摘要由CSDN通过智能技术生成

学完java在LeetCode刷题,经常会使用到HashSet这个数据结构,故在此处作如下


目录

简单了解一下HashSet:

什么时候使用HashSet?

算法中常会用的的HashSet有关方法:

实战算法题:


简单了解一下HashSet:

        HashSet的显著特点就是:HashSet对象中不能存储相同的数据,存储数据时是无序的。强调一点:HashSet存储元素的顺序并不是按照存入时的顺序;它是按照哈希值来存储数据,所以取数据也是按照哈希值取得。

你可能会想,HashSet的去重特点,HashMap也同样拥有啊,为什么还要用HashSet呢?这就不得不提:HashMap存储数据时是成对(Key,Value)存储的,而HashSet只有Key,没有Value;

什么时候使用HashSet?

        利用HashSet的特点,我们可以在判断是否有重复元素、或者去除重复元素时,使用HashSet;

算法中常会用的的HashSet有关方法:

1、add(E e) :如果当前列表中不存在e, 则将e加入列表,返回值类型:boolean

public class Test002 {
        public static void main(String[] args) {
            Set<String> set = new HashSet<>();
            set.add("Tom");
            set.add("liming");
            boolean jeck = set.add("Jeck");
            System.out.println(jeck);//true
        }
 }

2、contains(Object obj):判断列表中是否有元素 obj; 返回值类型:boolean

public class Test002 {
        public static void main(String[] args) {
            Set<String> set = new HashSet<>();
            set.add("Tom");
            set.add("liming");
            set.add("Jeck");
            System.out.println(set.contains("Tom"));//true 
            System.out.println(set.contains("tom"));//false

        }
    }

3、remove(Object obj):如果列表中存在元素 obj,则将其从列表中删除

public class Test002 {
        public static void main(String[] args) {
            Set<String> set = new HashSet<>();
            set.add("Tom");
            set.add("liming");
            set.add("Jeck");
            boolean res = set.remove("Tom");
            boolean res1 = set.remove("tom");
            System.out.println(res);//true
            System.out.println(res1);//false
        }
    }

4、size():得到列表中元素的个数     

public class Test002 {
        public static void main(String[] args) {
            Set<String> set = new HashSet<>();
            set.add("Tom");
            set.add("liming");
            set.add("Jeck");
            int size = set.size();
            System.out.println(size);//3
        }
    }

实战算法题:

题目一:给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。

解决方法:

class Solution {
    public boolean containsDuplicate(int[] nums) {
        Set<Integer> set=new HashSet<>();
        for(int v:nums){
            if(!set.add(v))
            return true;
        }
        return false;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值