set與list集合

list基本用法

java.util.List接口繼承自Collection接口椭蹄,是單列集合的一個重要分支缎患,習(xí)慣性地會將實現(xiàn)了List接口的對象稱為List集合忧勿。在List集合中允許出現(xiàn)重復(fù)的元素砍艾,所有的元素是以一種線性方式進行存儲的,在程序中可以通過索引來訪問集合中的指定元素弹沽。另外,List集合還有一個特點就是元素有序筋粗,即元素的存入順序和取出順序一致策橘。
1 基本操作:

    public static void main(String[] args) {
        // 創(chuàng)建List集合對象
        List<String> list = new ArrayList<String>();
        
        // 往 尾部添加 指定元素
        list.add("小狗子");
        list.add("小猴子");
        list.add("小毛驢");
        
        System.out.println(list);
        // add(int index,String s) 往指定位置添加
        list.add(1,"沒頭腦");
        
        System.out.println(list);
        // String remove(int index) 刪除指定位置元素  返回被刪除元素
        // 刪除索引位置為2的元素 
        System.out.println("刪除索引位置為2的元素");
        System.out.println(list.remove(2));
        
        System.out.println(list);
        
        // String set(int index,String s)
        // 在指定位置 進行 元素替代(改) 
        // 修改指定位置元素
        list.set(0, "小雞仔");
        System.out.println(list);
        
        // String get(int index)  獲取指定位置元素
        
        // 跟size() 方法一起用  來 遍歷的 
        for(int i = 0;i<list.size();i++){
            System.out.println(list.get(i));
        }
        //還可以使用增強for
        for (String string : list) {
            System.out.println(string);
        }   
    }
}

2 list的常用子類ArrayList集合和LinkedList集合.
?ArrayList集合數(shù)據(jù)存儲的結(jié)構(gòu)是數(shù)組結(jié)構(gòu)。元素增刪慢娜亿,查找快丽已,由于日常開發(fā)中使用最多的功能為查詢數(shù)據(jù)、遍歷數(shù)據(jù)买决,所以ArrayList是最常用的集合沛婴。
?LinkedList`集合數(shù)據(jù)存儲的結(jié)構(gòu)是鏈表結(jié)構(gòu)吼畏。方便元素添加、刪除的集合嘁灯。LinkedList提供了大量操作的方法如:

  • public void addFirst(E e):將指定元素插入此列表的開頭泻蚊。
  • public void addLast(E e):將指定元素添加到此列表的結(jié)尾。
  • public E getFirst():返回此列表的第一個元素丑婿。
  • public E getLast():返回此列表的最后一個元素性雄。
  • public E removeFirst():移除并返回此列表的第一個元素。
  • public E removeLast():移除并返回此列表的最后一個元素羹奉。
  • public E pop():從此列表所表示的堆棧處彈出一個元素秒旋。
  • public void push(E e):將元素推入此列表所表示的堆棧。
  • public boolean isEmpty():如果列表不包含元素尘奏,則返回true滩褥。
set集合

?Set接口和List接口一樣,同樣繼承自Collection接口炫加,它與Collection接口中的方法基本一致瑰煎,并沒有對Collection接口進行功能上的擴充,只是比Collection接口更加嚴格了俗孝。與List接口不同的是酒甸,Set接口中元素?zé)o序,并且都會以某種規(guī)則保證存入的元素不出現(xiàn)重復(fù)赋铝。
?HashSet是Set接口的一個實現(xiàn)類插勤,它所存儲的元素是不可重復(fù)的,并且元素都是無序的(即存取順序不一致)革骨。HashSet底層的實現(xiàn)其實是一個HashMap支持农尖。HashSet是根據(jù)對象的哈希值來確定元素在集合中的存儲位置,因此具有良好的存取和查找性能良哲。保證元素唯一性的方式依賴于:hashCode與equals方法盛卡。
?LinkedHashSet與HashSet的區(qū)別是,它是鏈表和哈希表組合的一個數(shù)據(jù)存儲結(jié)構(gòu)≈欤可以保證存儲元素唯一和存取元素有序.

set集合存儲不重復(fù)的元素的原理

?保證HashSet集合元素的唯一滑沧,其實就是根據(jù)對象的hashCode和equals方法來決定的。如果我們往集合中存放自定義的對象巍实,那么保證其唯一滓技,就必須復(fù)寫hashCode和equals方法建立屬于當前對象的比較方式。之所以可以實現(xiàn)不重復(fù), 這是因為set集合在調(diào)用add方法的時候,add方法會調(diào)用元素的hashCode和equal是方法.判斷元素是否重復(fù).
?結(jié)論:兩元素的哈希值相同,equals方法返回ture,則認定為元素相同.對應(yīng)元素不會被存儲到集合中,反之為元素不同,存儲.
?分析
?set.add(s1);
1)首先add方法會調(diào)用s1的hashCode方法, 計算字符串s1的哈希值(假設(shè)s1的哈希值為93672), 則會在集合中查找有沒有哈希值為93672的元素,如果沒有,則會把當前元素存儲到集合中.
2)若發(fā)現(xiàn)集合中已經(jīng)存在哈希值為93672這個元素, 則會產(chǎn)生哈希沖突.s1元素會繼續(xù)調(diào)用equals方法進行比較,即s1.equals(相同哈希值的元素);若返回ture.則是兩元素的哈希值相同,equals方法返回ture,判定為兩元素相同.就不會把s1存儲到對應(yīng)的集合中.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末棚潦,一起剝皮案震驚了整個濱河市令漂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖洗显,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件外潜,死亡現(xiàn)場離奇詭異,居然都是意外死亡挠唆,警方通過查閱死者的電腦和手機处窥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來玄组,“玉大人滔驾,你說我怎么就攤上這事《矶铮” “怎么了哆致?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長患膛。 經(jīng)常有香客問我摊阀,道長,這世上最難降的妖魔是什么踪蹬? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任胞此,我火速辦了婚禮,結(jié)果婚禮上跃捣,老公的妹妹穿的比我還像新娘漱牵。我一直安慰自己,他們只是感情好疚漆,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布酣胀。 她就那樣靜靜地躺著,像睡著了一般娶聘。 火紅的嫁衣襯著肌膚如雪闻镶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天丸升,我揣著相機與錄音铆农,去河邊找鬼。 笑死发钝,一個胖子當著我的面吹牛顿涣,可吹牛的內(nèi)容都是我干的波闹。 我是一名探鬼主播酝豪,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼精堕!你這毒婦竟也來了孵淘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤歹篓,失蹤者是張志新(化名)和其女友劉穎瘫证,沒想到半個月后揉阎,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡背捌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年毙籽,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片毡庆。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡坑赡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出么抗,到底是詐尸還是另有隱情毅否,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布蝇刀,位于F島的核電站螟加,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏吞琐。R本人自食惡果不足惜捆探,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望顽分。 院中可真熱鬧徐许,春花似錦、人聲如沸卒蘸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缸沃。三九已至恰起,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間趾牧,已是汗流浹背检盼。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留翘单,地道東北人吨枉。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像哄芜,于是被迫代替她去往敵國和親貌亭。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

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