1. 程式人生 > >【夯實基礎】JAVA集合框架總結(list和set的區別等等)

【夯實基礎】JAVA集合框架總結(list和set的區別等等)

幾個面試常見問題:
1.Q:ArrayList
Vector有什麼區別?HashMapHashTable有什麼區別?   A:VectorHashTable是執行緒同步的(synchronized)。效能上,ArrayListHashMap分別比VectorHashtable要好。

2.Q:
大致講解java集合的體系結構   A:ListSetMap是這個集合體系中最主要的三個介面。其中ListSet繼承自Collection介面。
      Set
不允許元素重複。HashSetTreeSet是兩個主要的實現類。
      List
有序且允許元素重複。ArrayListLinkedList
Vector是三個主要的實現類。
      Map
也屬於集合系統,但和Collection介面不同。Mapkeyvalue的對映集合,其中key列就是一個集合。key不能重複,但是value可以重複。HashMapTreeMapHashtable是三個主要的實現類。
      SortedSet
SortedMap介面對元素按指定規則排序,SortedMap是對key列進行排序。

3.Q
ComparableComparator區別
    A:
呼叫java.util.Collections.sort(Listlist)方法來進行排序的時候,List內的Object都必須實現了
Comparable介面。
        java.util.Collections.sort(Listlist
Comparator c),可以臨時宣告一個Comparator來實現排序。
        Collections.sort(imageList, newComparator() {
            publicint compare(Object a, Object b) {
                intorderA = Integer.parseInt( ( (Image) a).getSequence());
                intorderB = 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
基於Arraysychronizedpublic class ArrayListextendsAbstractListimplementsList,                         RandomAccess,                          Cloneable,                          java.io.Serializable基於ArrayArrayList非同步的。所以在效能上要比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 Setpublic class HashSet    extends AbstractSet    implements SetCloneable,java.io.SerializableHashSet的儲存方式是把HashMap中的Key作為Set的對應儲存項public class LinkedHashSet    extends HashSet    implements SetCloneable,java.io.Serializablepublic class TreeSet    extends AbstractSet    implements SortedSetCloneable,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>, CloneableSerializablepublic class TreeMap<K,V>    extends AbstractMap<K,V>    implements SortedMap<K,V>, Cloneable,java.io.SerializableHashMap通過hashcode對其內容進行快速查詢,而TreeMap中所有的元素都保持著某種固定的順序,如果你需要得到一個有序的結果你就應該使用TreeMapHashMap中元素的排列順序是不固定的)