HashSet集合是基于HashMap来实现的,不允许有重复的元素

                允许有NULL值

      无序,不会记录插入的顺序

HashSet 实例化对象

   HashSet<String> sites =new HashSet<String>();

HashSet 类  

   方法

      add()方法    重复的元素不会被添加

      contains()方法 判断元素是否存在于集合当中返回布尔值

      remove()方法 删除出集合中的元素

      clear()方法  删除集合中的所有元素

      size()方法 计算集合中的元素数量

      for-each方法  来迭代HashSet中的元素

import java.util.HashSet;

public class RunoobTest {
    public static void main(String[] args) {
    HashSet<String> sites = new HashSet<String>();
        sites.add("Google");
        sites.add("Runoob");
        sites.add("Taobao");
        sites.add("Zhihu");
            // 重复的元素不会被添加
        for (String i : sites) {
            System.out.println(i);
        }
    }
}

剑指offer

找出数组中重复的数字。

在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。

示例 1:

输入:
[2, 3, 1, 0, 2, 5, 3]
输出:2 或 3 

限制:

2 <= n <= 100000

class Solution {
    public int findRepeatNumber(int[] nums) {
        Set<Integer> set = new HashSet<Integer>();
        int repeat =-1;
        for(int num:nums){
            if(!set.add(num)){
                repeat = num;
                break;
            }
        }
        return repeat;
    }
}

也可用HashSet中的contains()方法进行判断

class Solution {
    public int findRepeatNumber(int[] nums) {
        HashSet<Integer> set = new HashSet<>();
        for (int i : nums) {
            if (set.contains(i)) {
                return i;
            }
            set.add(i);
        }
        return -1;
    }
}

sort()方法   

   Array  中的方法 对数组进行排序

class Solution {
    public int findRepeatNumber(int[] nums) {
Arrays.sort(nums);
        int i = nums[0];
        for (int j = 1; j < nums.length; j++) {
            if (nums[j] == i) {
                return nums[j];
            }
            i = nums[j];
        }
        return -1;
    }
}

 

  

 

Posted on 2022-10-24 17:52  鱼忆七秒瓶中沙  阅读(21)  评论(0编辑  收藏  举报