2022-06-29

一谓传、集合

(一).set集合

  1. Set繼承于Collection接口艳狐,是一個不允許出現(xiàn)重復(fù)元素驹闰,并且無序的集合瘪菌,主要有HashSet和TreeSet兩大實現(xiàn)類。

在判斷重復(fù)元素的時候嘹朗,Set集合會調(diào)用hashCode()和equal()方法來實現(xiàn)师妙。

HashSet是哈希表結(jié)構(gòu),主要利用HashMap的key來存儲元素屹培,計算插入元素的hashCode來獲取元素在集合中的位置默穴;

TreeSet是紅黑樹結(jié)構(gòu)怔檩,每一個元素都是樹中的一個節(jié)點,插入的元素都會進(jìn)行排序蓄诽;

2.set常用方法
與List接口一樣薛训,set接口也提供了集合操作的基本方法。但與List不同的是仑氛,Set還提供了equals(object o)和hashCode(),供其子類重寫乙埃,以實現(xiàn)對集合中插入重復(fù)元素的處理;

2.1 HashSet

HashSet實現(xiàn)Set接口调衰,底層由HashMap(后面講解)來實現(xiàn)膊爪,為哈希表結(jié)構(gòu),新增元素相當(dāng)于HashMap的key嚎莉,value默認(rèn)為一個固定的Object米酬。在我看來,HashSet相當(dāng)于一個閹割版的HashMap;

當(dāng)有元素插入的時候趋箩,會計算元素的hashCode值赃额,將元素插入到哈希表對應(yīng)的位置中來;

它繼承于AbstractSet叫确,實現(xiàn)了Set, Cloneable, Serializable接口跳芳。

(1)HashSet繼承AbstractSet類,獲得了Set接口大部分的實現(xiàn)竹勉,減少了實現(xiàn)此接口所需的工作飞盆,實際上是又繼承了AbstractCollection類;

(2)HashSet實現(xiàn)了Set接口次乓,獲取Set接口的方法吓歇,可以自定義具體實現(xiàn),也可以繼承AbstractSet類中的實現(xiàn)票腰;

(3)HashSet實現(xiàn)Cloneable城看,得到了clone()方法,可以實現(xiàn)克隆功能杏慰;

(4)HashSet實現(xiàn)Serializable测柠,表示可以被序列化,通過序列化去傳輸缘滥,典型的應(yīng)用就是hessian協(xié)議轰胁。

具有如下特點:

不允許出現(xiàn)重復(fù)因素;

允許插入Null值朝扼;

元素?zé)o序(添加順序和遍歷順序不一致)软吐;

線程不安全,若2個線程同時操作HashSet吟税,必須通過代碼實現(xiàn)同步凹耙;

(二)Map集合

1.Map集合的特點:

1.1 將鍵映射到值的對象姿现、

1.2 key和value可以是任意的引用類型的數(shù)據(jù)

1.3 一個映射不能包含重復(fù)的鍵(map集合的key值不能重復(fù))

1.4 每個鍵最多可以映射到一個值(每個鍵值對只有一個key值,一個value值)

1.5 同樣的值可以對應(yīng)多個不同的鍵(不同的鍵值對可以擁有相同的value值)

2.Map集合的功能:

2.1 添加功能: put(K key,V value)將指定的值與該映射中的指定鍵相關(guān)聯(lián)

2.2 刪除功能:

remove(Object key)如果存在肖抱,從該map集合中刪除一個鍵的映射

void clear()從該map集合中刪除所有的映射

2.3 長度功能:int size()返回此地圖中鍵值映射的數(shù)量

(三)List集合

  1. List中主要有ArrayList备典、LinkedList兩個實現(xiàn)類;Set中則是有HashSet實現(xiàn)類意述;而Queue是在JDK1.5后才出現(xiàn)的新集合提佣,主要以數(shù)組和鏈表兩種形式存在。

  2. 在Collection中荤崇,List集合是有序的拌屏,Developer可對其中每個元素的插入位置進(jìn)行精確地控制,可以通過索引來訪問元素术荤,遍歷元素倚喂。

  3. 在List集合中,我們常用到ArrayList和LinkedList這兩個類瓣戚。其中端圈,ArrayList底層通過數(shù)組實現(xiàn),隨著元素的增加而動態(tài)擴容子库。而LinkedList底層通過鏈表來實現(xiàn)舱权,隨著元素的增加不斷向鏈表的后端增加節(jié)點。ArrayList是Java集合框架中使用最多的一個類仑嗅,是一個數(shù)組隊列宴倍,線程不安全集合。它繼承于AbstractList仓技,實現(xiàn)List,RandomAccess, Cloneable, Serializable接口鸵贬。

(1)ArrayList實現(xiàn)List,得到了List集合框架基礎(chǔ)功能浑彰;

(2)ArrayList實現(xiàn)RandomAccess恭理,獲得了快速隨機訪問存儲元素的功能拯辙,RandomAccess是一個標(biāo)記接口郭变,沒有任何方法;

(3)ArrayList實現(xiàn)Cloneable涯保,得到了clone()方法诉濒,可以實現(xiàn)克隆功能;

(4)ArrayList實現(xiàn)Serializable夕春,表示可以被序列化未荒,通過序列化去傳輸,典型的應(yīng)用就是hessian協(xié)議及志。

  1. 它具有如下特點:

4.1 容量不固定片排,隨著容量的增加而動態(tài)擴容(閾值基本不會達(dá)到)

4.2 有序集合(插入的順序==輸出的順序)

4.3 插入的元素可以為null

4.4 增刪改查效率更高(相對于LinkedList來說)

4.5 線程不安全

二寨腔、常用類

(一)Object

  1. Java Object 類是所有類的父類,也就是說 Java 的所有類都繼承了 Object率寡,子類可以使用 Object 的所有方法迫卢,Object 類位于 java.lang 包中,編譯時會自動導(dǎo)入冶共,我們創(chuàng)建一個類時乾蛤,如果沒有明確繼承一個父類,那么它就會自動繼承 Object捅僵,成為 Object 的子類家卖。

2.Object常用方法

1 protected Object clone():創(chuàng)建并返回一個對象的拷貝

2 boolean equals(Object obj):比較兩個對象是否相等

3 protected void finalize():當(dāng) GC (垃圾回收器)確定不存在對該對象的有更多引用時,由對象的垃圾回收器調(diào)用此方法庙楚。

4 Class<?>getClass():獲取對象的運行時對象的類

5 int hashCode():獲取對象的 hash 值

6 String toString():返回對象的字符串表示形式

(二) String

  1. 字符串廣泛應(yīng)用 在 Java 編程中上荡,在 Java 中字符串屬于對象,Java 提供了 String 類來創(chuàng)建和操作字符串醋奠。

  2. String常用方法

2.1 char charAt(int index):返回指定索引處的 char 值榛臼。

2.2 int compareTo(Object o):把這個字符串和另一個對象比較。

2.3 String concat(String str):將指定字符串連接到此字符串的結(jié)尾窜司。

2.4 boolean equals(Object anObject):將此字符串與指定的對象比較沛善。

2.5 int indexOf(String str):返回指定子字符串在此字符串中第一次出現(xiàn)處的索引。

(三) StringBuilder

  1. StringBuilder是一個可變的字符串類塞祈,我們可以把它看成是一個容器金刁,這里的可變指的是StringBuilder對象中的內(nèi)容是可變的

  2. StringBuilder常用方法

2.1 public StringBuilder append():添加數(shù)據(jù),返回對象本身

2.2 public StringBuilder reverse():返回相反的字符序列

2.3 public int length():返回長度

2.4 public String toString():把StringBuilder轉(zhuǎn)換為String類型

(四)StringBuffeer

  1. StringBuffer 類可以比 String 類更高效地處理字符串议薪。

  2. StringBuffer常用方法

2.1 public StringBuffer append(String s):將指定的字符串追加到此字符序列尤蛮。

2.2 public StringBuffer reverse():將此字符序列用其反轉(zhuǎn)形式取代。

2.3 public delete(int start, int end):移除此序列的子字符串中的字符斯议。

2.4 public insert(int offset, int i):將 int 參數(shù)的字符串表示形式插入此序列中产捞。

2.5 insert(int offset, String str):將 str 參數(shù)的字符串插入此序列中。

2.6 replace(int start, int end, String str):使用給定 String 中的字符替換此序列的子字符串中的字符哼御。

(五) System

  1. System 類位于 java.lang 包坯临,代表當(dāng)前 Java程序的運行平臺,系統(tǒng)級的很多屬性和控制方法都放置在該類的內(nèi)部恋昼。由于該類的構(gòu)造方法是 private 的看靠,所以無法創(chuàng)建該類的對象,也就是無法實例化該類液肌。System 類提供了一些類變量和類方法挟炬,允許直接通過 System 類來調(diào)用這些類變量和類方法。

  2. System常用方法
    2.1 currentTimeMillis() 方法:該方法的作用是返回當(dāng)前的計算機時間,時間的格式為當(dāng)前計算機時間與 GMT 時間(格林尼治時間)1970 年 1 月 1 日 0 時 0 分 0 秒所差的毫秒數(shù)谤祖。一般用它來測試程序的執(zhí)行時間婿滓。

2.2 getProperty() 方法:該方法的作用是獲得系統(tǒng)中屬性名為 key 的屬性對應(yīng)的值。

2.3 arraycopy() 方法:該方法的作用是數(shù)組復(fù)制粥喜,即從指定源數(shù)組中復(fù)制一個數(shù)組空幻,復(fù)制從指定的位置開始,到目標(biāo)數(shù)組的指定位置結(jié)束容客。代碼示例:

public class System_arrayCopy {

    public static void main(String[] args) {

        char[] srcArray = {'A','B','C','D'};

        char[] destArray = {'E','F','G','H'};

        System.arraycopy(srcArray,1,destArray,1,2);

        System.out.println("源數(shù)組:");

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

            System.out.println(srcArray[i]);

        }

        System.out.println("目標(biāo)數(shù)組:");

        for(int j = 0;j < destArray.length;j++) {

            System.out.println(destArray[j]);

        }

    }

}

源數(shù)組:

A

B

C

D

目標(biāo)數(shù)組:

E

B

C

H

(六)Data

  1. java.util.Data類秕铛,表示特定的瞬間。精確到毫秒缩挑。

  2. Date常用方法

2.1 public String format(Data data):將Data對象格式化為字符串但两。

import java.text.DateFormat;

import java.text.SimpleDateFormat;

import java.util.Date;

/*

把Date對象轉(zhuǎn)換成String

*/

public class Demo03DateFormatMethod {

    public static void main(String[] args) {

        Date date = new Date();

        // 創(chuàng)建日期格式化對象,在獲取格式化對象時可以指定風(fēng)格

        DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");

        String str = df.format(date);

        System.out.println(str); // 2022年6月29日

    }

}   

2.2 public Data parse(String source):將字符串解析為Data對象。

import java.text.DateFormat;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

/*

把String轉(zhuǎn)換成Date對象

*/

public class Demo04DateFormatMethod {

    public static void main(String[] args) throws ParseException {

        DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");

        String str = "2022年6月29日";

        Date date = df.parse(str);

        System.out.println(date); 

    }

}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末供置,一起剝皮案震驚了整個濱河市谨湘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌芥丧,老刑警劉巖紧阔,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異续担,居然都是意外死亡擅耽,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進(jìn)店門物遇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乖仇,“玉大人,你說我怎么就攤上這事询兴∧松常” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵诗舰,是天一觀的道長警儒。 經(jīng)常有香客問我,道長眶根,這世上最難降的妖魔是什么蜀铲? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮汛闸,結(jié)果婚禮上蝙茶,老公的妹妹穿的比我還像新娘艺骂。我一直安慰自己诸老,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著别伏,像睡著了一般蹄衷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上厘肮,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天愧口,我揣著相機與錄音,去河邊找鬼类茂。 笑死耍属,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的巩检。 我是一名探鬼主播厚骗,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼兢哭!你這毒婦竟也來了领舰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤迟螺,失蹤者是張志新(化名)和其女友劉穎冲秽,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體矩父,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡锉桑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了窍株。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刨仑。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖夹姥,靈堂內(nèi)的尸體忽然破棺而出杉武,到底是詐尸還是另有隱情,我是刑警寧澤辙售,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布轻抱,位于F島的核電站,受9級特大地震影響旦部,放射性物質(zhì)發(fā)生泄漏祈搜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一士八、第九天 我趴在偏房一處隱蔽的房頂上張望容燕。 院中可真熱鬧,春花似錦婚度、人聲如沸蘸秘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽醋虏。三九已至寻咒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間颈嚼,已是汗流浹背毛秘。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留阻课,地道東北人叫挟。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像限煞,于是被迫代替她去往敵國和親霞揉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容