<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    我的JAVA窩! - BlogJava

    集合框架類筆記的補充

    java .util.*定義了一系列的接口和類,告訴我們用什么類NEW出一個對象,可以進行超越數組的操作。
    (注:JAVA1.5對JAVA1.4的最大改進就是增加了對范型的支持)

    Set接口是數學中集合的概念:其元素無序,且不可重復。(正好與List對應)

    !!注意數組和集合的區別:數組中只能存簡單數據類型。Collection接口和Map接口只能存對象。

    只有List可用get和size。而Set則不可用(因其無序)。

    集合中每一個元素都有對象,如有字符串要經過強制類型轉換。

    Collections是工具類,所有方法均為有用方法,且方法為static。


    Collections.Sort()分為兩部分,一部分為排序規則;一部分為排序算法。
    規則用來判斷對象;算法是考慮如何排序。
    對于自定義對象,Sort不知道規則,所以無法比較。這種情況下一定要定義排序規則。方式有兩種:
    java.lang下面有一個接口:Comparable(可比較的)
    可以讓自定義對象實現一個接口,這個接口只有一個方法comparableTo(Object o)
    其規則是當前對象與o對象進行比較,其返回一個int值,系統根據此值來進行排序。
    如 當前對象>o對象,則返回值>0;(可將返回值定義為1)
    如 當前對象=o對象,則返回值=0;
    如 當前對象<o對象,則返回值〈0。(可將返回值定義為-1)
    看TestArraylist的java代碼。
    我們通過返回值1和-1位置的調換來實現升序和降序排列的轉換。

    java.util下有一個Comparator(比較器)
    它擁有compare(),用來比較兩個方法。
    要生成比較器,則用Sort中Sort(List,List(Compate))
    第二種方法更靈活,且在運行的時候不用編譯。

    注意:要想實現comparTo()就必須在主方法中寫上implement comparable.


    集合的最大缺點是無法進行類型判定(這個缺點在JAVA1.5中已經解決),這樣就可能出現因為類型不同而出現類型錯誤。
    解決的方法是添加類型的判斷。

    而在LinkedList的底層是一種雙向循環鏈表。在此鏈表上每一個數據節點都由三部分組成:前指針(指向前面的節點的位置),數據,后指針(指向后面的節點的位置)。最后一個節點的后指針指向第一個節點的前指針,形成一個循環。

    LinkedList經常用在增刪操作較多而查詢操作很少的情況下:隊列和堆棧。
    隊列:先進先出的數據結構。
    堆棧:后進先出的數據結構。
    注意:使用堆棧的時候一定不能提供方法讓不是最后一個元素的元素獲得出棧的機會。
    LinkedList提供以下方法:(ArrayList無此類方法)
    addFirst();
    removeFirst();
    addLast();
    removeLast();


    Push用addFirst();pop用removeFirst(),實現后進先出。
    用isEmpty()--其父類的方法,來判斷棧是否為空。

    在隊列中,put為入隊列操作,get為出隊列操作。
    Put用addFirst(),get用removeLast()實現隊列。

    List接口的實現類(Vector)(與ArrayList相似,區別是Vector是重量級的組件,使用使消耗的資源比較多。)
    結論:在考慮并發的情況下用Vector(保證線程的安全)。
    在不考慮并發的情況下用ArrayList(不能保證線程的安全)。

    面試經驗(知識點):
    java.util.stack(stack即為堆棧)的父類為Vector。可是stack的父類是最不應該為Vector的。因為Vector的底層是數組,且Vector有get方法(意味著它可能訪問到并不屬于最后一個位置元素的其他元素,很不安全)。
    對于堆棧和隊列只能用push類和get類。
    Stack類以后不要輕易使用。
    !!!實現堆棧一定要用LinkedList。


    (在JAVA1.5中,collection有queue來實現隊列。)








    posted on 2007-03-19 22:04 J2S 閱讀(566) 評論(1)  編輯  收藏

    評論

    # re: 集合框架類筆記的補充 2008-09-13 18:23

    學習了,總結的好,只是不明白“數組中只能存簡單數據類型”中簡單數據類型是指什么?數組中什么都能放吧?聲明成什么類型就能放什么類型  回復  更多評論   


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2008年9月>
    31123456
    78910111213
    14151617181920
    21222324252627
    2829301234
    567891011

    導航

    統計

    常用鏈接

    留言簿(2)

    隨筆檔案

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 麻豆国产精品入口免费观看| 亚洲一区视频在线播放| 在线观看AV片永久免费| 免费大学生国产在线观看p| 久久亚洲免费视频| 国产亚洲一卡2卡3卡4卡新区| 99久久婷婷免费国产综合精品| 成年人免费网站在线观看| 国产亚洲av片在线观看16女人| 亚洲熟女www一区二区三区| 精品成人免费自拍视频| 亚洲A∨午夜成人片精品网站| 亚洲最大免费视频网| 成人A毛片免费观看网站| 国产精品无码免费视频二三区| 亚洲国产高清美女在线观看| 台湾一级毛片永久免费| 亚洲精品高清国产一线久久| 男人j进入女人j内部免费网站| 亚洲成av人片一区二区三区| 亚洲国产精品成人综合色在线| 无码国产精品一区二区免费| 亚洲人成人无码.www石榴| 国产精品69白浆在线观看免费| 亚洲国产无线乱码在线观看| 亚洲国产精品一区二区三区久久| 国产猛男猛女超爽免费视频| 亚洲伊人久久大香线蕉在观 | 国产一级一片免费播放i| 色老板亚洲视频免在线观| 精品国产sm捆绑最大网免费站 | 亚洲邪恶天堂影院在线观看| 99在线热播精品免费99热| 亚洲综合区图片小说区| 日韩免费无码一区二区三区| 久久久久亚洲精品成人网小说| 国产1024精品视频专区免费 | 日韩av无码久久精品免费| 亚洲欧美日韩国产成人| 亚洲熟女少妇一区二区| 伊人免费在线观看|