日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

最优的去重处理——HashSet去重

發(fā)布時(shí)間:2023/11/28 生活经验 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 最优的去重处理——HashSet去重 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

算法與數(shù)據(jù)結(jié)構(gòu)是密不可分的,我們使用不同的數(shù)據(jù)結(jié)構(gòu)和算法的組合就是我們解決問題的答案。
本篇我將就HashSet的特性和使用進(jìn)行介紹。

HashSet有哪些特性呢?

HashSet繼承了Set接口,Set接口有如下特性:

1.元素的無序性 != 隨機(jī)性。真正的無序性,是指元素在底層存儲(chǔ)的位置是無序的。

2.不可重復(fù)性。當(dāng)向Set集合中添加相同元素的時(shí)候,后面的這個(gè)添加不進(jìn)去。程序不會(huì)報(bào)錯(cuò)!

3.Set集合沒有自己獨(dú)有的方法,它的方法都是繼承于Collection接口中的現(xiàn)有方法

4.HashSet類是非線程安全的

5.允許集合元素值為null

而我們要講的就是他的不可重復(fù)性,它的不可重復(fù)性是如何保證的呢?

當(dāng)向Set中添加對(duì)象時(shí),會(huì)先調(diào)用此對(duì)象所在類的hashCode()方法,計(jì)算此對(duì)象對(duì)應(yīng)的哈希值,此哈希值決定了此對(duì)象在Set中的存儲(chǔ)位置,如果此位置之前沒有對(duì)象存儲(chǔ),則此對(duì)象直接存儲(chǔ)在這個(gè)位置上。反之,如果此位置之前已經(jīng)有對(duì)象存儲(chǔ),再通過equals()方法比較這兩個(gè)對(duì)象是否相同,equals()方法返回true,說明為同一個(gè)對(duì)象,那么這個(gè)對(duì)象就不會(huì)被添加進(jìn)來。


在力扣上有一道非常簡(jiǎn)單的題目,可以幫助我們很好的理解和使用HashSet 👇

力扣解題 575 分糖果

題目:給定一個(gè)偶數(shù)長(zhǎng)度的數(shù)組,其中不同的數(shù)字代表著不同種類的糖果,每一個(gè)數(shù)字代表一個(gè)糖果。你需要把這些糖果平均分給一個(gè)弟弟和一個(gè)妹妹。返回妹妹可以獲得的最大糖果的種類數(shù)。

示例 1:
輸入: candies = [1,1,2,2,3,3]
輸出: 3
解析: 一共有三種種類的糖果,每一種都有兩個(gè)。
最優(yōu)分配方案:妹妹獲得[1,2,3],弟弟也獲得[1,2,3]。這樣使妹妹獲得糖果的種類數(shù)最多。

示例 2 :
輸入: candies = [1,1,2,3]
輸出: 2
解析: 妹妹獲得糖果[2,3],弟弟獲得糖果[1,1],妹妹有兩種不同的糖果,弟弟只有一種。這樣使得妹妹可以獲得的糖果種類數(shù)最多。

注意:

  1. 數(shù)組的長(zhǎng)度為[2, 10,000],并且確定為偶數(shù)。
  2. 數(shù)組中數(shù)字的大小在范圍[-100,000, 100,000]內(nèi)。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/distribute-candies

public class _575_分糖果 {public static int distributeCandies(int[] candies) {//HashSet 去重最好的工具HashSet<Integer> set = new HashSet<Integer>();//遍歷數(shù)組,將數(shù)組中的元素添加至set中(重復(fù)則覆蓋)for (int candy : candies) {set.add(candy);}//判斷最后整個(gè)set中擁有的糖果種類數(shù)量和分到手中的糖果數(shù)量相比較返回小值return Math.min(set.size(), candies.length / 2);}//testpublic static void main(String[] args) {int [] a = {1,1,2,2,3,3};System.out.println(distributeCandies(a));}}

以上!

總結(jié)

以上是生活随笔為你收集整理的最优的去重处理——HashSet去重的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。