中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

Java中HashSet的解讀
來源:易賢網 閱讀:2241 次 日期:2015-04-10 14:39:23
溫馨提示:易賢網小編為您整理了“Java中HashSet的解讀”,方便廣大網友查閱!

一. HashSet源代碼

HashSet 的實現

對于 HashSet 而言,它是基于 HashMap 實現的,HashSet 底層采用 HashMap 來保存所有元素,因此 HashSet 的實現比較簡單,查看 HashSet 的源代碼,可以看到如下代碼: Java代碼

public class HashSet<E> extends AbstractSet<E>

implements Set<E>, Cloneable, java.io.Serializable {

// 使用 HashMap 的 key 保存 HashSet 中所有元素 private transient HashMap<E,Object> map;

// 定義一個虛擬的 Object 對象作為 HashMap 的 value private static final Object PRESENT = new Object(); ...

// 初始化 HashSet,底層會初始化一個 HashMap public HashSet() {

map = new HashMap<E,Object>(); }

// 以指定的 initialCapacity、loadFactor 創建 HashSet // 其實就是以相應的參數創建 HashMap

public HashSet(int initialCapacity, float loadFactor) {

map = new HashMap<E,Object>(initialCapacity, loadFactor); }

public HashSet(int initialCapacity) {

map = new HashMap<E,Object>(initialCapacity); }

HashSet(int initialCapacity, float loadFactor, boolean dummy) {

map = new LinkedHashMap<E,Object>(initialCapacity , loadFactor); }

// 調用 map 的 keySet 來返回所有的 key public Iterator<E> iterator()

{

return map.keySet().iterator(); }

// 調用 HashMap 的 size() 方法返回 Entry 的數量,就得到該 Set 里元素的個數

public int size() {

return map.size(); }

// 調用 HashMap 的 isEmpty() 判斷該 HashSet 是否為空, // 當 HashMap 為空時,對應的 HashSet 也為空 public boolean isEmpty() {

return map.isEmpty(); }

// 調用 HashMap 的 containsKey 判斷是否包含指定 key // HashSet 的所有元素就是通過 HashMap 的 key 來保存的 public boolean contains(Object o) {

return map.containsKey(o); }

// 將指定元素放入 HashSet 中,也就是將該元素作為 key 放入 HashMap public boolean add(E e) {

return map.put(e, PRESENT) == null; }

// 調用 HashMap 的 remove 方法刪除指定 Entry,也就刪除了 HashSet 中對應的元素

public boolean remove(Object o) {

return map.remove(o)==PRESENT; }

// 調用 Map 的 clear 方法清空所有 Entry,也就清空了 HashSet 中所有元素

public void clear() {

map.clear(); } ... }

由上面源程序可以看出,HashSet 的實現其實只是封裝了一個 HashMap 對象來存儲所有的集合元素,所有放入 HashSet 中的集合元素實際上由 HashMap 的 key 來保存,而 HashMap 的 value 則存儲了一個 PRESENT,它是一個靜態的 Object 對象。

HashSet 的絕大部分方法都是通過調用 HashMap 的方法來實現的,因此 HashSet 和 HashMap 兩個集合在實現本質上是相同的。

二.HashSet<E>對象

HashSet<E>創建的對象稱為集合:

HashSet<string> s= HashSet<string>;

那么s就是一個可以存儲 string 類型數據的集合,s 可以調用add(String s)方法將string類型的數據添加到集合中。添加到集合中的數據稱為集合的元素。集合不允許有相同的元素,也就是說,如果b已經是集合中的元素,那么在執行set.add(b)操作是無效的。 三.HashSet<E>中的方法詳解

① public boolean add(E o) —— 向集合添加參數指定的元素。(如果此集合中還

不包含指定元素,則添加指定元素。)

參數:

o - 將添加到此集合中的元素。 返回:

如果該集合還不包含指定元素,則返回 true。

② public void clear() ——清空集合,使集合不含有任何元素。

③ public boolean contains(Object o) —— 判斷參數指定的數據是否屬于集合。()

參數:

o - 其在此集合中的存在已得到測試的元素。

返回:

如果此集合不包含指定元素,則返回 true。

④ public boolean isEmpty()—— 判斷集合是否為空。

返回:

如果此集合不包含任何元素,則返回 true。

⑤ public boolean remove(Object o) ——集合刪除參數指定的元素。

參數:

o - 如果存在于此集合中則需要將其移除的對象。

返回:

如果集合包含指定元素,則返回 true。

⑥ public int size () —— 返回集合中元素的個數。

返回:

此集合中的元素的數量(集合的容量)。

⑦ Object [ ] toArray() —— 將集合元素存放到數組中,并返回這個數組。

⑧ boolean containsAll (HashSet set) —— 判斷當前集合是否包含參數指定的集合。

⑨ public Object clone () —— 得到當前集合的一個克隆對象,該對象中元素的改

變不會影響到當前集合中的元素,反之亦然。 返回:

此集合的淺表復制。

三.代碼:

import java.util.HashSet;

class Student{ String name; int score;

Student(String name, int score){ this.name = name; this.score = score; } }

public class TestHashSet{

public static void main(String[] args) {

Student zh = new Student("張三",77); Student li = new Student("李四",68); Student wa = new Student("王五",67);

HashSet<Student> set = new HashSet<Student>(); HashSet<Student> subset = new HashSet<Student>();

System.out.println("Before add(zh):"+set.add(zh)); set.add(zh);

System.out.println("After add(zh):"+set.add(zh)); //add方法的實現 set.add(wa); set.add(li);

subset.add(wa); subset.add(li);

System.out.println("Is subset empty? "+subset.isEmpty()); //isempty方法的實現

if (set.contains(wa)){

System.out.println("集合set中含有:"+wa.name); //contains方法的實現 }

if(set.containsAll(subset)){

System.out.println("集合set包含集合subset"); }

int number = subset.size(); //size方法的實現 System.out.println("集合subset中有"+number+"個元素:");

Object s[] = subset.toArray(); //toArray 方法的實現

for(int i=0; i<s.length; i++){

System.out.printf("姓名:%s,分數:%d ", ((Student)s[i]).name,((Student)s[i]).score); }

subset.remove(wa); //remove方法的實現 System.out.println("After implement remove on subset");

System.out.println("集合subset中有"+subset.size()+"個元素:");

Object a[] = subset.toArray();

for(int i=0; i<a.length; i++){

System.out.printf("姓名:%s,分數:%d ", ((Student)a[i]).name,((Student)a[i]).score); } } }

四.運行結果

Before add(zh):true After add(zh):false Is subset empty? false 集合set中含有:王五 集合set包含集合subset 集合subset中有2個元素: 姓名:李四,分數:68 姓名:王五,分數:67

After implement remove on subset 集合subset中有1個元素: 姓名:李四,分數:68

更多信息請查看IT技術專欄

更多信息請查看網絡編程
上一篇:java獲取ip地址
易賢網手機網站地址:Java中HashSet的解讀
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
一本色道久久综合精品竹菊 | 欧美日韩一区成人| 国产欧美三级| 一区二区三区鲁丝不卡| 欧美α欧美αv大片| 韩日视频一区| 欧美综合国产| 国产精品自拍小视频| 亚洲视频网在线直播| 欧美日韩免费在线观看| 日韩视频精品| 欧美日韩精品是欧美日韩精品| 亚洲国产欧美不卡在线观看| 免费看精品久久片| 亚洲国产婷婷| 欧美精品久久99久久在免费线| 亚洲经典在线| 欧美人与性禽动交情品| 99日韩精品| 国产精品九九久久久久久久| 亚洲一区精彩视频| 国产欧美日韩在线视频| 久久国产精彩视频| 一区二区三区中文在线观看| 玖玖国产精品视频| 亚洲精品美女久久久久| 欧美日韩午夜在线| 亚洲一区二区三区免费观看| 国产精品看片你懂得| 欧美一级专区免费大片| 激情视频一区| 欧美电影资源| 一区二区三区精密机械公司| 国产精品久久久久久五月尺| 欧美一区中文字幕| 在线播放日韩| 欧美日韩国产综合一区二区| 中文一区在线| 国产一二三精品| 欧美成人精品影院| 亚洲视频在线视频| 国产一区三区三区| 欧美二区在线观看| 亚洲欧美日韩天堂| 狠狠色丁香久久婷婷综合_中| 欧美成人小视频| 亚洲一区二区视频在线观看| 国产一区二区三区自拍| 欧美国产欧美综合| 性欧美8khd高清极品| 在线成人免费观看| 欧美日韩在线视频一区| 午夜日韩av| 亚洲精品国产欧美| 国产女人精品视频| 欧美激情麻豆| 久久成人这里只有精品| 日韩视频中文| 国产一区二区三区日韩| 欧美精品一区二区久久婷婷| 久久av一区二区三区| 亚洲精品日韩在线观看| 国产亚洲在线观看| 欧美体内she精视频在线观看| 久久九九免费视频| 亚洲一区国产视频| 亚洲九九九在线观看| 国产一区二区无遮挡| 欧美日韩在线综合| 鲁鲁狠狠狠7777一区二区| 亚洲欧美视频在线观看| 亚洲日韩成人| 伊人狠狠色丁香综合尤物| 国产精品久久久久久久久搜平片 | 免费成人在线视频网站| 亚洲女与黑人做爰| 91久久精品www人人做人人爽 | 久久在线免费观看视频| 亚洲永久在线观看| 亚洲精品日韩精品| 在线观看中文字幕亚洲| 国产午夜精品一区二区三区欧美| 欧美日韩亚洲网| 欧美成年视频| 久久综合电影一区| 久久精品亚洲国产奇米99| 亚洲一区二区三区视频播放| 亚洲精品一区二区三区婷婷月 | 欧美人与性动交a欧美精品| 久久成人综合视频| 亚洲欧美资源在线| 中文av字幕一区| 日韩午夜在线电影| 亚洲黄色有码视频| 在线看成人片| 1769国产精品| 影音先锋中文字幕一区| 国产原创一区二区| 国产午夜精品福利| 国产精品视频999| 国产精品久久99| 国产精品www色诱视频| 欧美日韩一区视频| 欧美色视频日本高清在线观看| 欧美日韩成人在线观看| 欧美精品www| 欧美日韩在线视频一区二区| 欧美日韩亚洲高清| 国产精品v亚洲精品v日韩精品 | 国产亚洲精品bv在线观看| 国产精品久久久免费| 欧美四级在线观看| 国产精品久久久久免费a∨| 国产精品久久久久婷婷| 国产精品网站在线播放| 国产欧美日韩精品在线| 国产小视频国产精品| 好看的亚洲午夜视频在线| 在线电影国产精品| 亚洲高清在线观看| 99精品99| 午夜精品免费| 久久久久久久久蜜桃| 久久夜色精品| 欧美搞黄网站| 欧美日韩在线播放三区四区| 欧美性生交xxxxx久久久| 国产精品久久久久久久久免费樱桃| 国产精品久久久久一区二区三区共 | 狠狠综合久久av一区二区小说 | 欧美在线亚洲在线| 久久精品视频在线观看| 另类欧美日韩国产在线| 欧美激情第二页| 国产精品高潮呻吟久久| 国产日韩亚洲| 91久久精品美女| 亚洲一区二区三区乱码aⅴ| 欧美一区二区在线免费播放| 久久久亚洲高清| 欧美激情中文字幕乱码免费| 欧美午夜一区| 国语自产精品视频在线看一大j8| 亚洲国产综合在线看不卡| 中文网丁香综合网| 久久久久久欧美| 欧美日韩午夜| 国产在线欧美日韩| 99视频超级精品| 久久九九热免费视频| 国产午夜精品美女视频明星a级 | 国产精品一区二区男女羞羞无遮挡| 国产性猛交xxxx免费看久久| 亚洲激情偷拍| 小嫩嫩精品导航| 欧美国产专区| 国产亚洲福利| 一本一本久久a久久精品综合麻豆| 欧美一级免费视频| 欧美精品二区| 黄色精品一区| 亚洲综合视频网| 欧美国产日韩在线| 国产老女人精品毛片久久| 亚洲国产高清在线| 欧美日韩精品一区二区| 国产精品亚洲综合久久| 亚洲精品欧美精品| 久久久久久一区二区| 国产精品久久久久久久久搜平片 | 国产午夜精品视频| 日韩午夜剧场| 毛片一区二区三区| 国产一区二区精品久久91| 亚洲少妇诱惑| 欧美激情综合色综合啪啪| 国内一区二区三区| 亚洲欧美影院| 欧美性猛交xxxx乱大交退制版| 亚洲国产视频直播| 久久久蜜桃一区二区人| 国产乱人伦精品一区二区| 亚洲卡通欧美制服中文| 久久综合国产精品| 国产一区 二区 三区一级| 亚洲中无吗在线| 欧美日韩在线视频一区| 亚洲精品在线观看视频| 你懂的视频欧美| 136国产福利精品导航网址| 久久精品1区| 国产日韩av高清| 亚洲综合视频1区| 国产精品igao视频网网址不卡日韩| 亚洲精品欧美专区| 欧美成人午夜77777| 亚洲二区免费| 麻豆精品一区二区av白丝在线| 国产在线拍揄自揄视频不卡99| 性欧美18~19sex高清播放|