Collection是最基本的集合接口,一個Collection代表一組Object,即Collection的元素(Elements) Map提供key到value的映射
ArrayList和Vector的區別,HashMap和Hashtable的區別
回答:就ArrayList與Vector主要從二方面來說.
一.同步性:Vector是線程安全的,也就是說是同步的,而ArrayList是線程序不安全的,不是同步的
二.資料成長:當需要成長時,Vector預設成長為原來一培,而ArrayList卻是原來的一半
就HashMap與HashTable主要從三方面來說。
一.歷史原因:Hashtable是基於陳舊的Dictionary類別的,HashMap是Java 1.2引進的Map介面的一個實作
二.同步性:Hashtable是線程安全的,也就是說是同步的,而HashMap是線程式不安全的,不是同步的
三.值:只有HashMap可以讓你將空值作為一個表格的條目的key或value
ArrayList,Vector, LinkedList的儲存效能和特性
ArrayList和Vector都是使用數組方式存儲數據,此數組元素數大於實際存儲的數據以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數組元素移動等內存操作,所以索引資料快而插入資料慢,Vector由於使用了synchronized方法(線程安全),通常性能上較ArrayList差,而LinkedList使用雙向鍊錶實現存儲,按序號索引資料需要進行前向或後向遍歷,但是插入資料時只需要記錄本項的前後項即可,所以插入速度較快。
8設計4個線程,其中兩個線程每次對j增加1,另外兩個線程對j每次減少1。寫出程式。
以下程式使用內部類別實作線程,對j增減的時候沒有考慮順序問題。
public class ThreadTest1{
private int j;
public static void main(String args[]){
ThreadTest1 tt=new ThreadTest1();
Inc inc=tt.new Inc( );
Dec dec=tt.new Dec();
for(int i=0;i<2;i ){
Thread t=new Thread(inc);
t.start ();
t=new Thread(dec);
t.start();
}
}
private synchronized void inc(){
j ;
System .out.println(Thread.currentThread().getName() "-inc:" j);
}
private synchronized void dec(){
j--;
System.out. println(Thread.currentThread().getName() "-dec:" j);
}
class Inc implements Runnable{
public void run(){
for(int i =0;i<100;i ){
inc();
}
}
}
class Dec implements Runnable{
public void run(){
for (int i=0;i<100;i ){
dec();
}
}
}
}
以上是JAVA中的Collection FrameWork有什麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!