1. 程式人生 > >Map介面和Iterator介面?

Map介面和Iterator介面?

Map介面:儲存“鍵-值”對的資料 ----相當於高中的“函式y = f(x)” (x1,y1)  (x2,y2)
>key是不可重複的,使用Set存放。value可以重複的,使用Collection來存放的。一個key-value對構成一個entry(Map.Entry),entry使用Set來存放。
>新增、修改 put(Object key,Object value)  刪除remove(Object key)  獲取get(Object key) size() / keySet() values()  entrySet()
 *     		|-----HashMap:主要的實現類,可以新增null鍵,null值
			|-----LinkedHashMap:是HashMap的子類,可以按照新增進Map的順序實現遍歷
			|-----TreeMap:需要按照key所在類的指定屬性進行排序。要求key是同一個類的物件。對key考慮使用自然排序 或 定製排序
			|-----Hashtable:是一個古老的實現類,執行緒安全的,不可以新增null鍵,null值不建議使用。
				

Iterator介面:用來遍歷集合Collection元素

Collections工具類:操作Collection及Map的工具類,大部分為static的方法。


1.自定義泛型類:應用
public class DAO<T> {
	public void add(T t){
		//....
	}
	public T get(int index){
		return null;
	}
	public List<T> getForList(int index){
		return null;
	}
	public void delete(int index){
		
	}
}

public class CustomerDAO extends DAO<Customer>{

}

public class TestCustomerDAO {
	public static void main(String[] args) {
		CustomerDAO c = new CustomerDAO();
		c.add(new Customer());
		c.get(0);
	}
}
【注意點】
1.物件例項化時不指定泛型,預設為:Object。
2.泛型不同的引用不能相互賦值。
3.加入集合中的物件型別必須與指定的泛型型別一致。
4.靜態方法中不能使用類的泛型。
5.如果泛型類是一個介面或抽象類,則不可建立泛型  
  類的物件。
6.不能在catch中使用泛型
7.從泛型類派生子類,泛型型別需具體化


4.泛型與繼承的關係
A類是B類的子類,G是帶泛型宣告的類或介面。那麼G<A>不是G<B>的子類!

Map介面:儲存“鍵-值”對的資料 ----相當於高中的“函式y = f(x)” (x1,y1)  (x2,y2)
>key是不可重複的,使用Set存放。value可以重複的,使用Collection來存放的。一個key-value對構成一個entry(Map.Entry),entry使用Set來存放。
>新增、修改 put(Object key,Object value)  刪除remove(Object key)  獲取get(Object key) size() / keySet() values()  entrySet()
 *             |-----HashMap:主要的實現類,可以新增null鍵,null值
            |-----LinkedHashMap:是HashMap的子類,可以按照新增進Map的順序實現遍歷
            |-----TreeMap:需要按照key所在類的指定屬性進行排序。要求key是同一個類的物件。對key考慮使用自然排序 或 定製排序
            |-----Hashtable:是一個古老的實現類,執行緒安全的,不可以新增null鍵,null值不建議使用。
                
 
Iterator介面:用來遍歷集合Collection元素
 
Collections工具類:操作Collection及Map的工具類,大部分為static的方法。
 
 
1.自定義泛型類:應用
public class DAO<T> {
    public void add(T t){
        //....
    }
    public T get(int index){
        return null;
    }
    public List<T> getForList(int index){
        return null;
    }
    public void delete(int index){
        
    }
}
 
public class CustomerDAO extends DAO<Customer>{
 
}
 
public class TestCustomerDAO {
    public static void main(String[] args) {
        CustomerDAO c = new CustomerDAO();
        c.add(new Customer());
        c.get(0);
    }
}
【注意點】
1.物件例項化時不指定泛型,預設為:Object。
2.泛型不同的引用不能相互賦值。
3.加入集合中的物件型別必須與指定的泛型型別一致。
4.靜態方法中不能使用類的泛型。
5.如果泛型類是一個介面或抽象類,則不可建立泛型  
  類的物件。
6.不能在catch中使用泛型
7.從泛型類派生子類,泛型型別需具體化
 
 
4.泛型與繼承的關係
A類是B類的子類,G是帶泛型宣告的類或介面。那麼G<A>不是G<B>的子類!