java map取第一個元素_Java Set接口 Map 與枚舉

4bb0c32c9a8af434100f06a9a7941433.png

Set接口

概述

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

特點

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

HashSet類

概述

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

特點

  1. 底層數據結構是 哈希表,HashSet的本質是一個"沒有重復元素"的集合,它是通過HashMap實現的。HashSet中含有一個"HashMap類型的成員變量"map,在HashSet中操作函數,實際上都是通過map實現的。
  2. 哈希表保證唯一 依賴hashcode和equals方法

? 原理: ? 首先判斷hashCode是否相同 ? 不相同 ? 就存儲到集合中 ? 相同 ? 比較equals方法是否相同 ? 相同 就不存儲 ? 不相同就以鏈表的方式存儲到集合中

  1. 哈希表導致元素存儲無序主要因為系統通過哈希算法計算出來的索引和對象本身的hashCode本身有關,所以這個整數值是無序的,從而存儲到集合中自然就是無序的

HashSet存儲自定義對象去除重復元素需要重寫 hashCode和equals方法

TreeSet

概述

基于 TreeMapNavigableSet 實現。使用元素的自然順序對元素進行排序,或者根據創建 set 時提供的 Comparator 進行排序,具體取決于使用的構造方法。

特點

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

? 【

? 第一個元素進來作為根節點存儲

? 后面元素進來和根節點比較

? 大了,放在元素的右邊

? 小了,放在元素的左邊

? 相等,設置原值

  1. 二叉樹保證元素可排序 --> 利用二叉樹中序遍歷取元素的特點。
  2. 注意中文排序可以使用 Collator類處理
  3. 建議使用三目運算符進行排序
  4. 針對返回值是double類型的,可以考慮使用三目轉換成int類型的結果

LinkeHashSet

概述

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

特點

  1. 底層數據結構是 鏈表和哈希表
  2. 鏈表保證元素有序
  3. 哈希表保證元素唯一

Map集合

Map集合提供了集合之間一種映射關系

讓集合和集合之間產生關系

Map集合的特點

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

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

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

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

一個映射不能包含重復的鍵。

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

常用功能

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()

枚舉

何為枚舉?

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

特點:

1.必須在規定范圍內取值

2.這個值只能取一個

3.這個值可以是規定范圍內的任意一個

枚舉中常用的方法

String name()

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

int ordinal()

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

static >

T valueOf(類 enumType, String name)

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

T valueOf(String name)

T[] values();

枚舉的特點總結

枚舉既然是一個類,那么枚舉是否有構造方法,成員方法,靜態方法,靜態變量,成員變量,抽象方法?

有的話,有意義嗎?

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

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

3.枚舉中構造方法必須私有

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

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

switch語句中可以有哪些?

byte short int char String 枚舉

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/445838.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/445838.shtml
英文地址,請注明出處:http://en.pswp.cn/news/445838.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python中yield簡單用法

Python中yield簡單用法 你或許知道帶有yield的函數在Python中被稱之為generator&#xff0c;那何為 generator&#xff1f; 我們暫時拋開generator&#xff0c;先從一個常見編程題目開始&#xff0c;循序漸進了解yield的概念。 生成Fibonacci數列 Fibonacci數列是一個經典遞…

js 用下標獲取map值_js map方法處理返回數據,獲取指定數據簡寫方法

map方法處理返回數據&#xff0c;獲取指定數據簡寫方法前言后端返回數據為數組列表時&#xff0c;通常比較全面&#xff0c;包含了很多不需要的數據&#xff0c;可以通過 map 方法處理返回數據&#xff0c;篩選出想要的數據例如// 返回數據res [{id: 1,name: zhangsan,age: 16…

《Python Cookbook 3rd》筆記匯總

文章目錄一、數據結構二、字符串和文本三、數字、日期和時間四、迭代器與生成器五、文件與IO一、數據結構 標題關鍵詞1.1&#xff1a;拆分序列后賦值給多個變量可迭代對象、拆分賦值1.2&#xff1a;拆分任意長可迭代對象后賦值給多個變量可迭代對象、拆分賦值、星號表達式1.3&…

mysql hp ux_hp ux apa 切換

(HP-UX Only) OR - 1 heartbeat network using APA with 2 trunk members (HP-UX Only) OR - 1 heartbeat network with serial line (HP-UX Only) OR......一、 概述 HP 的 APA 軟件提供兩種網卡冗余切換模式,用以實現網絡高可用性...0x000000000000 hp_apa HP-UX 11i v3 Prer…

Python中[:]與[::]的用法

Python中[:]與[::]的用法 概述 [:]與[::]語法是通用序列操作&#xff08;Common Sequence Operations&#xff09;其中的兩個。用[:]或[::]對多數序列類型&#xff08;可變的或不可變的&#xff09;&#xff08;如字符串、列表等&#xff09;序列中元素進行截取。 [:]的用法…

mysql redis 中間件_Docker快速搭建Mysql社區版,Redis,MongoDb、MQ等等中間件。

一&#xff1a;安裝docker社區版。Centos系列(最好用7以上的版本&#xff0c;docker需要3.1以上的linux內核版本)sudo yum install docker-ce docker-ce-cli containerd.iosudo systemctl start dockersudo docker run hello-world如果你敲docker info需要root密碼&#xff0c;…

JavaScript中String的slice(),substr(),substring()三者區別

JavaScript中String的slice()&#xff0c;substr()&#xff0c;substring()三者區別 共同之處 從給定的字符串中截取片段&#xff0c;并返回全新的這片段的字符串對象&#xff0c;且不會改動原字符串。 具體不同之處 slice() str.slice(beginIndex[, endIndex])參數描述be…

pythontuple數據類型_數據類型-元組Tuple

Python Tuple用于存儲不可變python對象的序列。元組類似于列表&#xff0c;因為可以改變列表中存儲的項的值&#xff0c;而元組是不可變的&#xff0c;并且不能改變存儲在元組中的項的值。元組可以寫成用小括號括起來的逗號分隔值的集合。元組可以定義如下。T1 (101, "Ay…

《劍指Offer》24:反轉鏈表

題目 定義一個函數&#xff0c;輸入一個鏈表的頭節點&#xff0c;反轉鏈表并輸出反轉后鏈表的頭節點。鏈表節點定義如下&#xff1a; public static class ListNode{public int val;public ListNode next;public ListNode(int val) {this.val val;} }分析 方法一&#xff1…

python兩個for循環為什么第二個循環里值不變_兩個for循環,第二個只在第一個迭代python上執行...

我是一個pythonnoob&#xff0c;我試圖比較兩個文件中的行之間的值&#xff0c;如果行在第二個文件中&#xff0c;則輸出“line name”&#xff0c;然后輸出1&#xff1b;如果第二個文件中缺少該行&#xff0c;則輸出0。第一次迭代返回1&#xff0c;因為該行在第二個文件中&…

python如何問問題_學會正確的提問

可能很多讀者看到這個標題會感覺很可笑&#xff0c;提問誰不會啊&#xff0c;互聯網時代&#xff0c;提問還不是一句話的事情&#xff1f;個人、技術群、論壇里都可以提問啊&#xff0c;「你好」「在嗎&#xff1f;」「有人用過 xx 工具嗎&#xff1f;」。首先&#xff0c;提問…

如何保證接口的冪等性

如何保證接口的冪等性 什么是冪等性 冪等性是系統服務對外一種承諾&#xff0c;承諾只要調用接口成功&#xff0c;外部多次調用對系統的影響是一致的。聲明為冪等的服務會認為外部調用失敗是常態&#xff0c;并且失敗之后必然會有重試。 通俗地說&#xff0c;接口冪等性就是…

mysql二進制方式_MySQL數據庫之MySql二進制連接方式詳解

本文主要向大家介紹了MySQL數據庫之MySql二進制連接方式詳解 &#xff0c;通過具體的內容向大家展現&#xff0c;希望對大家學習MySQL數據庫有所幫助。使用mysql二進制方式連接您可以使用MySQL二進制方式進入到mysql命令提示符下來連接MySQL數據庫。實例以下是從命令行中連接my…

xposed模塊編寫教程_太極xposed模塊使用教程

今天給大家分享一下太極xposed模塊使用教程。很多小伙伴說下載不到Xposed模塊&#xff0c;這個網上其實很多&#xff0c;但是第三方的下載站就算了吧。我也是一個深受其害的網癮少年&#xff0c;只要是下載站的軟件&#xff0c;一不留心一次性電腦可能會多安裝好多個軟件&#…

如何使用mysql添加更新_Mysql 存在既更新,不存在就添加(sql語句)

討人喜歡的 MySQL replace into 用法(insert into 的增強版)在向表中插入數據的時候&#xff0c;經常遇到這樣的情況&#xff1a;1. 首先判斷數據是否存在&#xff1b; 2. 如果不存在&#xff0c;則插入&#xff1b;3.如果存在&#xff0c;則更新。在 SQL Server 中可以這樣處理…

linux + nginx + mysql + php 百度網盤_5.LNMP(Linux + Nginx + MySQL + PHP)環境安裝

1.安裝Nginx:yum install yum-priorities -ywget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpmrpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpmyum -y install nginxsystemctl start nginx.servicesystemctl stop ngin…

LeetCode - Easy - 28. Implement strStr()

Topic Two Pointers, String Description https://leetcode.com/problems/implement-strstr/ Implement strStr(). Return the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack. needle /?ni?dl/ n.針 haystack /?he?…

mysql item_MySQL源代碼:關于MySQL的Item對象

前篇介紹了MySQL如何從SQL語句轉換成一個內部對象。本文是前篇的延續&#xff0c;將更加詳細的介紹WHERE語句對應的Item對象。1. Item對象MySQL InternalMySQL Internals Manual較為詳細的介紹了Item對象。Item對象經常被稱作"thingamabob"(A thingamabob is a noun …

python的發展趨勢圖_用Python繪制趨勢圖

我在數據幀中有以下數據&#xff1a;-------------------------------------------------------| Physician Profile Id | Program Year | Value Of Interest |-------------------------------------------------------| 1004777 | 2013 | 83434288.00 || 1004777 | 2014 | 89…

mysql的實現類注解_Mybaits (XML方式:無需在寫Dao的實現類 注解方式:Dao的實現類與Mapper都可以不寫 重點理解)...

Maven的pom.xml 坐標配置4.0.0Mybatis_mavenday01_mbatis1.0-SNAPSHOTjarorg.mybatismybatis3.4.5mysqlmysql-connector-java5.1.45junitjunit4.12testorg.apache.maven.pluginsmaven-compiler-plugin2.3.21.81.8UTF-8mybatis的配置文件/p>PUBLIC "-//mybatis.org//DTD…