java集合的方法有哪些 java集合類中哪些是線程安全的?
java集合類中哪些是線程安全的?有些歷史類一般是線程安全的,比如Vector,HashTabljava集合求交集高效算法?只需使用Java jdk的集合接口中定義的方法:布爾retail all(c
java集合類中哪些是線程安全的?
有些歷史類一般是線程安全的,比如Vector,HashTabl
java集合求交集高效算法?
只需使用Java jdk的集合接口中定義的方法:
布爾retail all(collection lt?gt c)
jdk的實(shí)現(xiàn)相對(duì)高效。如果你有興趣,你可以親自看看源代碼是如何實(shí)現(xiàn)的。
下面是一個(gè)參考示例:
//按如下使用:
公共靜態(tài)void main(String[] args) {
listlint
java枚舉如何運(yùn)用?
謝謝你的邀請(qǐng)。讓 讓我們介紹一下枚舉的用法。
認(rèn)知枚舉
枚舉意味著某類變量的值只能是幾個(gè)固定值中的一個(gè),否則編譯器會(huì)報(bào)錯(cuò)。枚舉允許編譯器在編譯時(shí)控制源程序賦的非法值,這在開發(fā)階段使用普通變量是無法實(shí)現(xiàn)的。
在JDK1.5之后,使用關(guān)鍵字enum定義一個(gè)新的類型,稱為枚舉類型。
在JDK 1.5中,可以使用enum定義的枚舉類的對(duì)象作為switch表達(dá)式中的表達(dá)式,枚舉值的名稱可以直接用在case子句中,無需添加枚舉類作為限定條件。
枚舉的定義
建議枚舉類名以Enum為后綴,枚舉成員應(yīng)該大寫,單詞應(yīng)該用下劃線分隔。
枚舉實(shí)際上是一個(gè)特殊的常量類,構(gòu)造函數(shù)默認(rèn)強(qiáng)制為私有。
正確的命名方法是:
ResultEnum的成員名為SUCCESS/UNKNOWN_REASON。
定義規(guī)則如下:
私有化類的構(gòu)造器。
如果成員變量被聲明為final。在構(gòu)造函數(shù)中進(jìn)行初始化,不允許被修改,
通過公共方法調(diào)用屬性。
枚舉實(shí)例必須在前面。
需要在枚舉實(shí)例后面加一個(gè)分號(hào),然后寫構(gòu)造函數(shù)等等。
默認(rèn)情況下,枚舉類提供values()方法,該方法可以輕松地遍歷所有枚舉值。
枚舉類對(duì)象可以有屬性。
如果枚舉類顯式定義了帶參數(shù)的構(gòu)造函數(shù),則在列出枚舉值時(shí),它也必須傳入相應(yīng)的參數(shù)。
枚舉類和枚舉關(guān)鍵字
使用enum關(guān)鍵字設(shè)置枚舉類的意義,其實(shí)就是想定義一個(gè)類,這個(gè)類繼承了enum類。
對(duì)枚舉的集合支持對(duì)枚舉的集合支持向Set和Map接口添加了兩個(gè)新的子類:EnumSet和EnumMap:
枚舉類的基本用法
我們可以定義顏色的枚舉:
怎么稱呼?Java switch語句參數(shù)支持枚舉類。
用構(gòu)造函數(shù)枚舉
定義規(guī)則:
私有化類的構(gòu)造者
枚舉實(shí)例必須在前面。
需要在枚舉實(shí)例后面加一個(gè)分號(hào),然后寫構(gòu)造函數(shù)等等。
讓枚舉實(shí)現(xiàn)接口。
枚舉類可以實(shí)現(xiàn)一個(gè)或多個(gè)接口。就像普通類實(shí)現(xiàn)接口一樣,枚舉實(shí)現(xiàn)接口的類時(shí),需要實(shí)現(xiàn)接口中包含的方法。
如果需要每個(gè)枚舉值在調(diào)用同一方法時(shí)有不同的行為,可以讓每個(gè)枚舉值在{...}匿名塊。
在枚舉中定義抽象方法
Enum類是一個(gè)很特殊的類,實(shí)際上是一個(gè)抽象類。枚舉中可以使用抽象方法,但是枚舉中的每個(gè)對(duì)象分別實(shí)現(xiàn)抽象方法;
枚舉來實(shí)現(xiàn)單例類
1.借助JDK1.5增加的枚舉,實(shí)現(xiàn)了singleton模式。既能避免多線程同步的問題,又能防止反序列化重新創(chuàng)建新對(duì)象。
2.這種方法是《有效的Java》的作者Josh Bloch所提倡的。
枚舉類和常量的區(qū)別
這種方法不同于使用中的枚舉,但我們?yōu)槭裁匆x擇枚舉呢?
(1)不安全類型:因?yàn)樯厦婷糠N顏色其實(shí)都是一個(gè)int整數(shù),所以完全可以把一種顏色作為int整數(shù),比如加紅綠,所以代碼完全正常。
(2)無命名空間:需要顏色時(shí),必須以COLOR_為前綴,否則程序可能會(huì)與其他類中的靜態(tài)常量混淆。
。(3)打印輸出的含義不明確:輸出某個(gè)季節(jié)時(shí),比如COLOR_RED,實(shí)際上輸出的是1,很難猜到它代表的是紅色。
(4)不易擴(kuò)展,每個(gè)鍵對(duì)應(yīng)一個(gè)值。
枚舉類和普通類的區(qū)別
默認(rèn)情況下,用enum定義的枚舉類繼承類。
枚舉類的構(gòu)造函數(shù)只能使用私有訪問控制器來枚舉該類的所有實(shí)例。所有實(shí)例都必須在枚舉類中顯式列出(以結(jié)尾分隔)。列出的實(shí)例系統(tǒng)將自動(dòng)用public static final修飾。
Enum枚舉類的主要方法
Values()方法:返回枚舉類型的對(duì)象數(shù)組。這個(gè)方法可以很容易地遍歷所有枚舉值。
ValueOf(String str):可以將一個(gè)字符串轉(zhuǎn)換成對(duì)應(yīng)的枚舉類對(duì)象。必需的字符串必須是枚舉。類對(duì)象的名稱。否則,將會(huì)出現(xiàn)運(yùn)行時(shí)異常。