淺析Java中的set集合類型及其接口的用法
概念
首先,我們看看Set集合。
(01) Set 是繼承于Collection的接口。它是一個不允許有重復(fù)元素的集合。
(02) AbstractSet 是一個抽象類,它繼承于AbstractCollection,AbstractCollection實現(xiàn)了Set中的絕大部分函數(shù),為Set的實現(xiàn)類提供了便利。
(03) HastSet 和 TreeSet 是Set的兩個實現(xiàn)類。
HashSet依賴于HashMap,它實際上是通過HashMap實現(xiàn)的。HashSet中的元素是無序的。
TreeSet依賴于TreeMap,它實際上是通過TreeMap實現(xiàn)的。TreeSet中的元素是有序的。
eg:
下面我們以遍歷違例來看看set集合的利用:
package com.sort; import java.util.HashSet; import java.util.Iterator; import java.util.Set; /** * 一個不包含重復(fù)元素的 collection。更確切地講,set 不包含滿足 e1.equals(e2) 的元素對 e1 和 e2, * @author Owner * */ public class SetTest2 { public static void main(String[] args) { Set<String> set = new HashSet<String>(); set.add("a"); set.add("b"); set.add("c"); set.add("d"); set.add("e"); set.add("e");//不能放入重復(fù)數(shù)據(jù) /** * 遍歷方法一,迭代遍歷 */ for(Iterator<String> iterator = set.iterator();iterator.hasNext();){ System.out.print(iterator.next()+" "); } System.out.println(); System.out.println("********************"); /** * for增強循環(huán)遍歷 */ for(String value : set){ System.out.print(value+" "); } } }
注意:這里Set集合中放入的是String類型,假如我們放入一個自己定義的類實例的時候,比如Person類實例,這時候我們要自己重新hashcode和equal方法,用自己的關(guān)鍵字段來重寫,因為當使用HashSet時,hashCode()方法就會得到調(diào)用,判斷已經(jīng)存儲在集合中的對象的hash code值是否與增加的對象的hash code值一致;如果不一致,直接加進去;如果一致,再進行equals方法的比較,equals方法如果返回true,表示對象已經(jīng)加進去了,就不會再增加新的對象,否則加進去。
相關(guān)文章
springboot?vue接口測試HutoolUtil?TreeUtil處理樹形結(jié)構(gòu)
這篇文章主要介紹了springboot?vue接口測試HutoolUtil?TreeUtil處理樹形結(jié)構(gòu),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05SpringMVC中控制器返回JSON數(shù)據(jù)的實現(xiàn)
本文主要介紹了SpringMVC中控制器返回JSON數(shù)據(jù)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07引入QQ郵箱發(fā)送驗證碼進行安全校驗功能實現(xiàn)
最近遇到這樣的需求用戶輸入自己的郵箱,點擊獲取驗證碼,后臺會發(fā)送一封郵件到對應(yīng)郵箱中,怎么實現(xiàn)呢?下面小編給大家?guī)砹艘隥Q郵箱發(fā)送驗證碼進行安全校驗功能,需要的朋友可以參考下2023-02-02Java后臺基于POST獲取JSON格式數(shù)據(jù)
這篇文章主要介紹了Java后臺基于POST獲取JSON格式數(shù)據(jù),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-03-03簡單的一次springMVC路由跳轉(zhuǎn)實現(xiàn)
本文主要介紹了springMVC路由跳轉(zhuǎn)實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04Springboot全局異常捕獲及try catch區(qū)別解析
這篇文章主要介紹了Springboot全局異常捕獲及try catch區(qū)別解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06Spring Security基本架構(gòu)與初始化操作流程詳解
這篇文章主要介紹了Spring Security基本架構(gòu)與初始化操作流程,Spring Security是一個能夠為基于Spring的企業(yè)應(yīng)用系統(tǒng)提供聲明式的安全訪問控制解決方案的安全框架2023-03-03SpringBoot配置自定義攔截器實現(xiàn)過程詳解
在系統(tǒng)中經(jīng)常需要在處理用戶請求之前和之后執(zhí)行一些行為,例如檢測用戶的權(quán)限,或者將請求的信息記錄到日志中,即平時所說的"權(quán)限檢測"及"日志記錄",下面這篇文章主要給大家介紹了關(guān)于在SpringBoot項目中整合攔截器的相關(guān)資料,需要的朋友可以參考下2022-10-10