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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

java map取值_Java Set接口 Map 与枚举

發(fā)布時間:2025/3/15 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java map取值_Java Set接口 Map 与枚举 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Set接口

概述

一個不包含重復(fù)元素的 collection。更確切地講,set 不包含滿足 e1.equals(e2) 的元素對 e1 和 e2,并且最多包含一個 null 元素

特點

  • Set接口是無序的
  • Set 是繼承于Collection的接口。它是一個不允許有重復(fù)元素的集合。
  • Set可以存儲null值,但是null不能重復(fù)
  • Set的實現(xiàn)類都是基于Map來實現(xiàn)的(HashSet是通過HashMap實現(xiàn)的,TreeSet是通過TreeMap實現(xiàn)的)。
  • HashSet類

    概述

    此類實現(xiàn) Set 接口,由哈希表(實際上是一個 HashMap 實例)支持。它不保證 set 的迭代順序;特別是它不保證該順序恒久不變。此類允許使用 null 元素。

    特點

  • 底層數(shù)據(jù)結(jié)構(gòu)是 哈希表,HashSet的本質(zhì)是一個"沒有重復(fù)元素"的集合,它是通過HashMap實現(xiàn)的。HashSet中含有一個"HashMap類型的成員變量"map,在HashSet中操作函數(shù),實際上都是通過map實現(xiàn)的。
  • 哈希表保證唯一 依賴hashcode和equals方法
  • ? 原理: ? 首先判斷hashCode是否相同 ? 不相同 ? 就存儲到集合中 ? 相同 ? 比較equals方法是否相同 ? 相同 就不存儲 ? 不相同就以鏈表的方式存儲到集合中

  • 哈希表導(dǎo)致元素存儲無序主要因為系統(tǒng)通過哈希算法計算出來的索引和對象本身的hashCode本身有關(guān),所以這個整數(shù)值是無序的,從而存儲到集合中自然就是無序的
  • HashSet存儲自定義對象去除重復(fù)元素需要重寫 hashCode和equals方法

    TreeSet

    概述

    基于 TreeMap 的 NavigableSet 實現(xiàn)。使用元素的自然順序?qū)υ剡M(jìn)行排序,或者根據(jù)創(chuàng)建 set 時提供的 Comparator 進(jìn)行排序,具體取決于使用的構(gòu)造方法。

    特點

  • TreeSet 是一個有序的并且可排序的集合,它繼承于AbstractSet抽象類,實現(xiàn)了NavigableSet, Cloneable, java.io.Serializable接口。
  • TreeSet是基于TreeMap實現(xiàn)的。TreeSet中的元素支持2種排序方式:自然排序 或者 根據(jù)創(chuàng)建TreeSet 時提供的 Comparator 進(jìn)行排序。這取決于使用的構(gòu)造方法。
  • TreeSet是非同步的,線程不安全的,效率高。
  • 二叉樹保證元素唯一
  • ? 【

    ? 第一個元素進(jìn)來作為根節(jié)點存儲

    ? 后面元素進(jìn)來和根節(jié)點比較

    ? 大了,放在元素的右邊

    ? 小了,放在元素的左邊

    ? 相等,設(shè)置原值

  • 二叉樹保證元素可排序 --> 利用二叉樹中序遍歷取元素的特點。
  • 注意中文排序可以使用 Collator類處理
  • 建議使用三目運算符進(jìn)行排序
  • 針對返回值是double類型的,可以考慮使用三目轉(zhuǎn)換成int類型的結(jié)果
  • LinkeHashSet

    概述

    List 接口的鏈接列表實現(xiàn)。實現(xiàn)所有可選的列表操作,并且允許所有元素(包括 null)。除了實現(xiàn) List接口外,LinkedList類還為在列表的開頭及結(jié)尾get、remove和insert` 元素提供了統(tǒng)一的命名方法。這些操作允許將鏈接列表用作堆棧、隊列或雙端隊列。

    特點

  • 底層數(shù)據(jù)結(jié)構(gòu)是 鏈表和哈希表
  • 鏈表保證元素有序
  • 哈希表保證元素唯一
  • Map集合

    Map集合提供了集合之間一種映射關(guān)系

    讓集合和集合之間產(chǎn)生關(guān)系

    Map集合的特點

    1.能夠存儲唯一的列的數(shù)據(jù)(唯一,不可重復(fù)) Set

    2.能夠存儲可以重復(fù)的數(shù)據(jù)(可重復(fù)) List

    3.值的順序取決于鍵的順序

    4.鍵和值都是可以存儲null元素的

    一個映射不能包含重復(fù)的鍵。

    每個鍵最多只能映射到一個值。

    常用功能

    1.添加功能

    ? V put(K key, V value)

    ? void putAll(Map<? extends K,? extends V> m)

    2.刪除功能

    ? V remove(Object key)

    ? void clear()

    3.遍歷功能

    ? Set keySet()

    ? Collection values()

    ? Set> entrySet()

    4.獲取功能

    ? V get(Object key)

    5.判斷功能

    ? boolean containsKey(Object key)

    ? boolean containsValue(Object value)

    ? boolean isEmpty()

    6.修改功能

    ? V put(K key, V value)

    ? void putAll(Map<? extends K,? extends V> m)

    7.長度功能

    ? int size()

    枚舉

    何為枚舉?

    枚舉是在一定范圍內(nèi)取值,并且這個值必須是枚舉類型中的任意一個,并且只能有一個

    特點:

    1.必須在規(guī)定范圍內(nèi)取值

    2.這個值只能取一個

    3.這個值可以是規(guī)定范圍內(nèi)的任意一個

    枚舉中常用的方法

    String name()

    返回此枚舉常量的名稱,與其枚舉聲明中聲明的完全相同。

    int ordinal()

    返回此枚舉常數(shù)的序數(shù)(其枚舉聲明中的位置,其中初始常數(shù)的序數(shù)為零)。

    static >

    T valueOf(類 enumType, String name)

    返回具有指定名稱的指定枚舉類型的枚舉常量。

    T valueOf(String name)

    T[] values();

    枚舉的特點總結(jié)

    枚舉既然是一個類,那么枚舉是否有構(gòu)造方法,成員方法,靜態(tài)方法,靜態(tài)變量,成員變量,抽象方法?

    有的話,有意義嗎?

    1.枚舉中所有的成員,必須出現(xiàn)在枚舉對象的下面

    2.如果枚舉類中有一個成員,那么 枚舉對象最后不能省略分號

    3.枚舉中構(gòu)造方法必須私有

    4.抽象方法有意義 - 可以用來描述某個枚舉成員的信息,提高程序的可讀性

    5.枚舉也是switch語句中 的常量 形式之一

    switch語句中可以有哪些?

    byte short int char String 枚舉

    總結(jié)

    以上是生活随笔為你收集整理的java map取值_Java Set接口 Map 与枚举的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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