java第六周周報(bào)

前言

本周是學(xué)習(xí)java的第六周序厉,把容器大部分內(nèi)容學(xué)完了淮逻。

參考教程:

W3Cschool

本周學(xué)習(xí)要點(diǎn):

1.Map中的HashMapTreeMap區(qū)別不大者娱,效率上使用HashMap肃晚,需要用到排序時(shí)使用TreeMap

2.TreeMap是典型的紅黑二叉樹(shù)的實(shí)現(xiàn)欢策。

3.TreeMap會(huì)按照key遞增的方式排序吆寨,在使用自己定義的類時(shí)需要實(shí)現(xiàn)comparable接口并重寫CompareTo方法。

4.HashMapHashTable:前者線程不安全踩寇,效率高啄清,允許key或value為null;后者線程安全效率低俺孙,不運(yùn)行key或value為null辣卒。

5.HashSet是set的實(shí)現(xiàn)類,set內(nèi)的元素沒(méi)有順序且不可重復(fù)睛榄,使用add方法加入重復(fù)的元素則會(huì)加入失敗荣茫,其底層由HashMap實(shí)現(xiàn)。

6.TreeSet底層用TreeMap實(shí)現(xiàn)场靴,同樣的需要實(shí)現(xiàn)compareable接口

7.collection是一個(gè)接口啡莉,collections是一個(gè)包裝類。

實(shí)現(xiàn)comparable接口并重寫CompareTo方法

class Emp implements Comparable<Emp>{
    int id;
    String name;
    double salary;
    public Emp(int id, String name, double salary) {
        super();
        this.id = id;
        this.name = name;
        this.salary = salary;
    }
    @Override
    public int compareTo(Emp o) {
        if(this.salary>o.salary){
            return 1;
        }else if (this.salary<o.salary) {
            return -1;
        }else {
            if(this.id>o.id){
                return 1;
            }
            else if (this.id<o.id) {
                return -1;
            }else {
                return 0;
            }
        }
    }
}

對(duì)于這個(gè)重寫的方法旨剥,規(guī)定了自定義的比較后的返回值咧欣。大于時(shí)返回1,小于時(shí)返回-1泞边,等于時(shí)返回0该押。在這里我比較了salary疗杉,當(dāng)salary出現(xiàn)相等的情況時(shí)則比較id阵谚,若id出現(xiàn)相等的情況時(shí)則返回0蚕礼,即表示相等,當(dāng)然了梢什,還可以繼續(xù)延展下去奠蹬,如id相等時(shí)在嵌套if,elseif語(yǔ)句來(lái)比較name是否相等嗡午。

遍歷容器的方式

一般的有四種:
1.for循環(huán)
2.增強(qiáng)for循環(huán)(foreach)
3.for循環(huán)+迭代器
4.while循環(huán)+迭代器

迭代器遍歷容器元素

迭代器是一種設(shè)計(jì)模式囤躁,它是一個(gè)對(duì)象,它可以遍歷并選擇序列中的對(duì)象荔睹,而開(kāi)發(fā)人員不需要了解該序列的底層結(jié)構(gòu)狸演。迭代器通常被稱為“輕量級(jí)”對(duì)象,因?yàn)閯?chuàng)建它的代價(jià)小僻他。

Java中的Iterator功能比較簡(jiǎn)單宵距,并且只能單向移動(dòng):

(1) 使用方法iterator()要求容器返回一個(gè)Iterator。第一次調(diào)用Iterator的next()方法時(shí)吨拗,它返回序列的第一個(gè)元素满哪。注意:iterator()方法是java.lang.Iterable接口,被Collection繼承。

(2) 使用next()獲得序列中的下一個(gè)元素劝篷。

(3) 使用hasNext()檢查序列中是否還有元素哨鸭。

(4) 使用remove()將迭代器新返回的元素刪除。

Iterator是Java迭代器最簡(jiǎn)單的實(shí)現(xiàn)娇妓,為L(zhǎng)ist設(shè)計(jì)的ListIterator具有更多的功能像鸡,它可以從兩個(gè)方向遍歷List,也可以從List中插入和刪除元素哈恰。
遍歷list:

    public static void testIteratorList() {
        List<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        
        for(Iterator<String> iter=list.iterator();iter.hasNext();){
            String temp = iter.next();
            System.out.println(temp);
        }
    }

遍歷set:

    public static void testIteratorSet() {
        Set<String> set = new HashSet<>();
        set.add("aa");
        set.add("bb");
        
        for(Iterator<String> iter=set.iterator();iter.hasNext();){
            String temp = iter.next();
            System.out.println(temp);
        }
    }

遍歷map:

    public static void testIteratorMap() {
        Map<Integer, String> map = new HashMap<>();
        map.put(1, "aa");
        map.put(2, "ss");
        
        //第一種方式
        Set<Entry<Integer, String>> ss = map.entrySet();
        for(Iterator<Entry<Integer,String>> iter=ss.iterator();iter.hasNext();){
            Entry<Integer,String> temp=iter.next();
            System.out.println(temp.getKey()+"--"+temp.getValue());
        }
        //第二種方式
        Set<Integer> keySet = map.keySet();
        for(Iterator<Integer> iter=keySet.iterator();iter.hasNext();){
            Integer key = iter.next();
            System.out.println(key+"--"+map.get(key));
        }
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末坟桅,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蕊蝗,更是在濱河造成了極大的恐慌仅乓,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蓬戚,死亡現(xiàn)場(chǎng)離奇詭異夸楣,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)子漩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門豫喧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人幢泼,你說(shuō)我怎么就攤上這事紧显。” “怎么了缕棵?”我有些...
    開(kāi)封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵孵班,是天一觀的道長(zhǎng)涉兽。 經(jīng)常有香客問(wèn)我,道長(zhǎng)篙程,這世上最難降的妖魔是什么枷畏? 我笑而不...
    開(kāi)封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮虱饿,結(jié)果婚禮上拥诡,老公的妹妹穿的比我還像新娘。我一直安慰自己渴肉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布爽冕。 她就那樣靜靜地躺著,像睡著了一般扇售。 火紅的嫁衣襯著肌膚如雪前塔。 梳的紋絲不亂的頭發(fā)上承冰,一...
    開(kāi)封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音困乒,去河邊找鬼。 笑死娜搂,一個(gè)胖子當(dāng)著我的面吹牛迁霎,可吹牛的內(nèi)容都是我干的百宇。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼携御,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了啄刹?” 一聲冷哼從身側(cè)響起涮坐,我...
    開(kāi)封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤誓军,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后昵时,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體捷雕,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年非区,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了盹廷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡俄占,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缸榄,到底是詐尸還是另有隱情渤弛,我是刑警寧澤甚带,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站鹰贵,受9級(jí)特大地震影響晴氨,放射性物質(zhì)發(fā)生泄漏碉输。R本人自食惡果不足惜籽前,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望敷钾。 院中可真熱鬧枝哄,春花似錦、人聲如沸阻荒。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)侨赡。三九已至瘪贱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間辆毡,已是汗流浹背菜秦。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留舶掖,地道東北人球昨。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像眨攘,于是被迫代替她去往敵國(guó)和親主慰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嚣州,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

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

  • Java集合類可用于存儲(chǔ)數(shù)量不等的對(duì)象,并可以實(shí)現(xiàn)常用的數(shù)據(jù)結(jié)構(gòu)如棧,隊(duì)列等,Java集合還可以用于保存具有映射關(guān)...
    小徐andorid閱讀 1,942評(píng)論 0 13
  • Collection ├List │├LinkedList │├ArrayList │└Vector │└Stac...
    AndyZX閱讀 878評(píng)論 0 1
  • 四、集合框架 1:String類:字符串(重點(diǎn)) (1)多個(gè)字符組成的一個(gè)序列共螺,叫字符串该肴。生活中很多數(shù)據(jù)的描述都采...
    佘大將軍閱讀 756評(píng)論 0 2
  • 集合類框架的介紹: ![Java 集合類框架](https://upload-images.jianshu.io/...
    LynnGuo閱讀 754評(píng)論 0 1
  • 在編程中,常常需要集中存放多個(gè)數(shù)據(jù)藐不。集合類主要負(fù)責(zé)保存匀哄、盛裝其他數(shù)據(jù),因此集合類也被稱為容器類雏蛮。所有的集合類都位于...
    一一一二二三閱讀 411評(píng)論 0 1