【夯實基礎】JAVA集合框架總結(list和set的區別等等)
阿新 • • 發佈:2019-01-30
幾個面試常見問題:
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(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 interfaceCollection
extendsIterable
public interfaceList
extendsCollection
public abstract classAbstractList
extendsAbstractCollection
implementsList
public class
Vector
extendsAbstractList
implementsList,
RandomAccess,
java.lang.Cloneable,
java.io.Serializable
基於Array是“sychronized”的public class ArrayListextendsAbstractListimplementsList, RandomAccess, Cloneable, java.io.Serializable基於ArrayArrayList是非同步的。所以在效能上要比Vector優越一些public class LinkedList extends AbstractSequentialList implements List, Queue, Cloneable, java.io.Serializable不基於Array基於Array的List(Vector,ArrayList)適合查詢,而LinkedList(連結串列)適合新增,刪除操作List基本上都是以Array為基礎。但是Set則是在HashMap的基礎上來實現的,這個就是Set和List的根本區別public abstract class AbstractSet extends AbstractCollection implements Setpublic class HashSet extends AbstractSet implements Set, Cloneable,java.io.SerializableHashSet的儲存方式是把HashMap中的Key作為Set的對應儲存項public class LinkedHashSet extends HashSet implements Set, Cloneable,java.io.Serializablepublic 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, Serializablepublic class TreeMap<K,V> extends AbstractMap<K,V> implements SortedMap<K,V>, Cloneable,java.io.SerializableHashMap通過hashcode對其內容進行快速查詢,而TreeMap中所有的元素都保持著某種固定的順序,如果你需要得到一個有序的結果你就應該使用TreeMap(HashMap中元素的排列順序是不固定的)
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
Map也屬於集合系統,但和Collection介面不同。Map是key對value的對映集合,其中key列就是一個集合。key不能重複,但是value可以重複。HashMap、TreeMap和Hashtable是三個主要的實現類。
SortedSet和SortedMap介面對元素按指定規則排序,SortedMap是對key列進行排序。
3.Q:Comparable和Comparator區別
A:呼叫java.util.Collections.sort(Listlist)方法來進行排序的時候,List內的Object都必須實現了
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;
}
});
4.Q:簡述equals()和hashCode()
A:...不知道。下回分解
public interfaceCollection
extendsIterable
public interfaceList
extendsCollection
public abstract classAbstractList
extendsAbstractCollection
implementsList
public class
Vector
extendsAbstractList
implementsList,
RandomAccess,
java.lang.Cloneable,
java.io.Serializable
基於Array是“sychronized”的public class ArrayListextendsAbstractListimplementsList, RandomAccess, Cloneable, java.io.Serializable基於ArrayArrayList是非同步的。所以在效能上要比Vector優越一些public class LinkedList extends AbstractSequentialList implements List, Queue, Cloneable, java.io.Serializable不基於Array基於Array的List(Vector,ArrayList)適合查詢,而LinkedList(連結串列)適合新增,刪除操作List基本上都是以Array為基礎。但是Set則是在HashMap的基礎上來實現的,這個就是Set和List的根本區別public abstract class AbstractSet extends AbstractCollection implements Setpublic class HashSet extends AbstractSet implements Set, Cloneable,java.io.SerializableHashSet的儲存方式是把HashMap中的Key作為Set的對應儲存項public class LinkedHashSet extends HashSet implements Set, Cloneable,java.io.Serializablepublic 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, Serializablepublic class TreeMap<K,V> extends AbstractMap<K,V> implements SortedMap<K,V>, Cloneable,java.io.SerializableHashMap通過hashcode對其內容進行快速查詢,而TreeMap中所有的元素都保持著某種固定的順序,如果你需要得到一個有序的結果你就應該使用TreeMap(HashMap中元素的排列順序是不固定的)