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

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

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

    隨筆 - 37  文章 - 29  trackbacks - 0


    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    最新評論

    閱讀排行榜

    評論排行榜


    下面是我自己畫的,關系畫得沒上面好,但我自己看著清楚些



    還有一張下載來的:




    有序否

    允許元素重復否

    Collection

    List

    Set

    AbstractSet

    HashSet

    TreeSet

    是(用二叉樹排序)

    Map

    AbstractMap

    使用key-value來映射和存儲數據,Key必須惟一,value可以重復

    HashMap

    TreeMap

    是(用二叉樹排序)



    幾個面試常見問題:
    1.Q:ArrayList和Vector有什么區別?HashMap和HashTable有什么區別?
       A:Vector和HashTable是線程同步的(synchronized)。性能上,ArrayList和HashMap分別比Vector和Hashtable要好。

    2.Q:大致講解java集合的體系結構
       A:List、Set、Map是這個集合體系中最主要的三個接口。
          其中List和Set繼承自Collection接口。
          Set不允許元素重復。HashSet和TreeSet是兩個主要的實現類。
          List有序且允許元素重復。ArrayList、LinkedList和Vector是三個主要的實現類。
          Map也屬于集合系統,但和Collection接口不同。Map是key對value的映射集合,其中key列就是一個集合。key不能重復,但是value可以重復。HashMap、TreeMap和Hashtable是三個主要的實現類。
          SortedSet和SortedMap接口對元素按指定規則排序,SortedMap是對key列進行排序。

    3.Q:Comparable和Comparator區別
        A:調用java.util.Collections.sort(List list)方法來進行排序的時候,List內的Object都必須實現了Comparable接口。
            java.util.Collections.sort(List list,Comparator c),可以臨時聲明一個Comparator 來實現排序。
            Collections.sort(imageList, new Comparator() {
                public int compare(Object a, Object b) {
                    int orderA = Integer.parseInt( ( (Image) a).getSequence());
                    int orderB = Integer.parseInt( ( (Image) b).getSequence());
                    return orderA - orderB;
               }
            });
            如果需要改變排列順序
            改成return orderb - orderA 即可。

    4.Q:簡述equals()和hashCode()
        A:...不知道。下回分解

    public interface
    Collection
                extends Iterable


    public interface
    List
                extends Collection


    public abstract class
    AbstractList
                extends AbstractCollection
                implements List


    public class
    Vector
                extends AbstractList
                implements List,
                                       RandomAccess,
                                       java.lang.Cloneable,
                                       java.io.Serializable
    基于Array
    是“sychronized


    public class
    ArrayList
           
    extends AbstractList
           
    implements List,
                              RandomAccess,
                              Cloneable,
                              java.io.Serializable
    基于Array
    ArrayList非同步的。所以在性能上要比Vector優越一些


    public class
    LinkedList
            extends AbstractSequentialList
            implements List,
                              Queue,
                              Cloneable
    ,
                              java.io.Serializable
    不基于Array

    基于ArrayListVectorArrayList)適合查詢,而LinkedList(鏈表)適合添加,刪除操作




    List基本上都是以Array為基礎。但是Set則是在HashMap的基礎上來實現的,這個就是SetList的根本區別
    public abstract class AbstractSet
        extends AbstractCollection
        implements Set



    public class HashSet
        extends AbstractSet
        implements Set, Cloneable, java.io.Serializable
    HashSet的存儲方式是把HashMap中的Key作為Set的對應存儲項


    public class LinkedHashSet
        extends HashSet
        implements Set, Cloneable, java.io.Serializable


    public class TreeSet
        extends AbstractSet
        implements SortedSet, Cloneable, java.io.Serializable
    它是通過SortedMap來實現的




    public interface Map<K,V>


    public abstract class AbstractMap<K,V>
        implements Map<K,V>


    public class HashMap<K,V>
        extends AbstractMap<K,V>
        implements Map<K,V>, Cloneable, Serializable


    public class TreeMap<K,V>
        extends AbstractMap<K,V>
        implements SortedMap<K,V>, Cloneable, java.io.Serializable

    HashMap通過hashcode對其內容進行快速查找,而TreeMap中所有的元素都保持著某種固定的順序,如果你需要得到一個有序的結果你就應該使用TreeMap(HashMap中元素的排列順序是不固定的)



    更詳細的可以看:
    http://www.frontfree.net/view/article_695.html
    http://blog.csdn.net/happyzhm5/archive/2007/03/17/1532101.aspx
    http://blog.csdn.net/Java_apprentice/archive/2007/07/20/1700351.aspx

    解析Java對象的equals()和hashCode()的使用: http://tmsoft.lsxy.com/index.php?id=82&load=read


    posted on 2007-11-12 10:06 EvanLiu 閱讀(116942) 評論(14)  編輯  收藏 所屬分類: Java基礎

    FeedBack:
    # re: JAVA集合小結 2008-03-23 20:49 礦礦
    不 大 懂
    我是新手!!  回復  更多評論
      
    # re: JAVA集合小結 2012-01-04 15:32 11
    AbstractrMap 怎么在Collection中實現了?  回復  更多評論
      
    # re: JAVA集合小結 2012-05-15 21:59 
    很好,謝謝LZ  回復  更多評論
      
    # re: JAVA集合小結 2012-07-12 11:48 yaoweijava
    學習了  回復  更多評論
      
    # re: JAVA集合小結 2012-08-31 15:04 給你評“爛”的人
    爛  回復  更多評論
      
    # re: JAVA集合小結 2012-11-27 09:25 雷鋒
    collection是接口,collections是需要實現的類。你的圖有問題。  回復  更多評論
      
    # re: JAVA集合小結 2012-12-04 21:40 鄭濱
    謝謝你  回復  更多評論
      
    # re: JAVA集合小結[未登錄] 2013-07-16 14:54 1
    xiexie  回復  更多評論
      
    # re: JAVA集合小結 2014-02-27 22:08 sad
    贊!  回復  更多評論
      
    # re: JAVA集合小結[未登錄] 2014-08-10 10:44 java
    hascode 相同 equals吧一定相同
    equals相同hascode一定相同
    equals不同hascode不一定不同  回復  更多評論
      
    # re: JAVA集合小結 2015-08-19 22:29 樂234
    第二張圖 左上角應該是AbstractCollection  回復  更多評論
      
    # re: JAVA集合小結 2015-09-16 14:57 12
    你這有部分是不對的,但還是要謝謝你的分享  回復  更多評論
      
    # re: JAVA集合小結 2015-09-23 16:04 aldrich
    請問你是用什么軟件畫的圖???  回復  更多評論
      
    # re: JAVA集合小結 2016-06-24 09:51 Master
    謝謝分享  回復  更多評論
      
    主站蜘蛛池模板: 免费在线观看亚洲| 亚洲欧洲日产国产最新| 黄色片网站在线免费观看| 日韩免费高清视频网站| 亚洲砖码砖专无区2023| 免费特级黄毛片在线成人观看| 亚洲va久久久久| 成人毛片18女人毛片免费| 亚洲一区二区观看播放| 精品国产免费一区二区| 黄页视频在线观看免费| 亚洲国产婷婷综合在线精品| 国产免费MV大全视频网站| 精品亚洲综合久久中文字幕| 精品无码国产污污污免费网站| 亚洲第一页在线视频| 毛片a级毛片免费观看品善网| 日韩亚洲人成在线| 国产又大又粗又硬又长免费| 国产AV无码专区亚洲AV琪琪 | 国产亚洲视频在线| 久久亚洲av无码精品浪潮| 免费看成人AA片无码视频吃奶| 亚洲av之男人的天堂网站| 亚洲毛片免费观看| 亚洲精品理论电影在线观看 | 国产成人精品久久亚洲| 四虎成人精品永久免费AV| 在线综合亚洲中文精品| 免费又黄又爽的视频| 日本免费在线中文字幕| 亚洲精品乱码久久久久久V| 亚洲人成网77777色在线播放| 2019中文字幕在线电影免费 | 亚洲av无码专区在线观看素人| 中文成人久久久久影院免费观看| 亚洲中文久久精品无码1| 男人的天堂亚洲一区二区三区| 三年片在线观看免费观看大全中国| 亚洲国产日韩在线视频| 最近中文字幕无吗高清免费视频|