1. 程式人生 > >亞美柏科筆試題——java

亞美柏科筆試題——java

一。hashmap與hashtable的區別

導讀: 

1 HashMap不是執行緒安全的 

            hastmap是一個介面 是map介面的子介面,是將鍵對映到值的物件,其中鍵和值都是物件,並且不能包含重複鍵,但可以包含重複值。HashMap允許null key和null value,而hashtable不允許。

2   HashTable是執行緒安全的一個Collection。

HashMap是Hashtable的輕量級實現(非執行緒安全的實現),他們都完成了Map介面,主要區別在於HashMap允許空(null)鍵值(key),由於非執行緒安全,效率上可能高於Hashtable。
HashMap允許將null作為一個entry的key或者value,而Hashtable不允許。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因為contains方法容易讓人引起誤解。 
Hashtable繼承自Dictionary類,而HashMap是Java1.2引進的Map interface的一個實現。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個執行緒訪問Hashtable時,不需要自己為它的方法實現同步,而HashMap 就必須為之提供外同步。 
Hashtable和HashMap採用的hash/rehash演算法都大概一樣,所以效能不會有很大的差異。

public static void main(String args[])
{
HashTable h=new HashTable();
h.put("使用者1",new Integer(90));
h.put("使用者2",new Integer(50));
h.put("使用者3",new Integer(60));
h.put("使用者4",new Integer(70));
h.put("使用者5",new Integer(80));
Enumeration e=h.elements();
while(e.hasMoreElements()){
System.out.println(e.nextElement());
}

map 的方法:

clear()從 Map 中刪除所有對映

remove(Object key)從 Map 中刪除鍵和關聯的值

       put(Object key, Object value)將指定值與指定鍵相關聯 

get(Object key)返回與指定鍵關聯的值

containsKey(Object key)如果 Map 包含指定鍵的對映,則返回 true 

containsValue(Object value)如果此 Map 將一個或多個鍵對映到指定值,則返回 true

isEmpty()如果 Map 不包含鍵-值對映,則返回 true size()返回 Map 中的鍵-值對映的數目

這些都代表了Java中的集合,這裡主要從其元素是否有序,是否可重複來進行區別記憶,以便恰當地使用,當然還存在同步方面的差異,見上一篇相關文章。


有序否


允許元素重複否


Collection




List




Set


AbstractSet




HashSet


TreeSet


是(用二叉樹排序)


Map


AbstractMap



使用key-value來對映和儲存資料,Key必須惟一,value可以重複


HashMap


TreeMap


是(用二叉樹排序)

List 介面對Collection進行了簡單的擴充,它的具體實現類常用的有ArrayList和LinkedList。你可以將任何東西放到一個List容器中,並在需要時從中取出。ArrayList從其命名中可以看出它是一種類似陣列的形式進行儲存,因此它的隨機訪問速度極快,而LinkedList的內部實現是連結串列,它適合於在連結串列中間需要頻繁進行插入和刪除操作。在具體應用時可以根據需要自由選擇。前面說的Iterator只能對容器進行向前遍歷,而 ListIterator則繼承了Iterator的思想,並提供了對List進行雙向遍歷的方法。 

Set介面也是 Collection的一種擴充套件,而與List不同的時,在Set中的物件元素不能重複,也就是說你不能把同樣的東西兩次放入同一個Set容器中。它的常用具體實現有HashSet和TreeSet類。HashSet能快速定位一個元素,但是你放到HashSet中的物件需要實現hashCode()方法,它使用了前面說過的雜湊碼的演算法。而TreeSet則將放入其中的元素按序存放,這就要求你放入其中的物件是可排序的,這就用到了集合框架提供的另外兩個實用類Comparable和Comparator。一個類是可排序的,它就應該實現Comparable介面。有時多個類具有相同的排序演算法,那就不需要在每分別重複定義相同的排序演算法,只要實現Comparator介面即可。集合框架中還有兩個很實用的公用類:Collections和 Arrays。Collections提供了對一個Collection容器進行諸如排序、複製、查詢和填充等一些非常有用的方法,Arrays則是對一個數組進行類似的操作。 


            Map是一種把鍵物件和值物件進行關聯的容器,而一個值物件又可以是一個Map,依次類推,這樣就可形成一個多級對映。對於鍵物件來說,像Set一樣,一個Map容器中的鍵物件不允許重複,這是為了保持查詢結果的一致性;如果有兩個鍵物件一樣,那你想得到那個鍵物件所對應的值物件時就有問題了,可能你得到的並不是你想的那個值物件,結果會造成混亂,所以鍵的唯一性很重要,也是符合集合的性質的。當然在使用過程中,某個鍵所對應的值物件可能會發生變化,這時會按照最後一次修改的值物件與鍵對應。對於值物件則沒有唯一性的要求。你可以將任意多個鍵都對映到一個值物件上,這不會發生任何問題(不過對你的使用卻可能會造成不便,你不知道你得到的到底是那一個鍵所對應的值物件)。Map有兩種比較常用的實現: HashMap和TreeMap。HashMap也用到了雜湊碼的演算法,以便快速查詢一個鍵,TreeMap則是對鍵按序存放,因此它便有一些擴充套件的方法,比如firstKey(),lastKey()等,你還可以從TreeMap中指定一個範圍以取得其子Map。鍵和值的關聯很簡單,用pub (Object key,Object value)方法即可將一個鍵與一個值物件相關聯。用get(Object key)可得到與此key物件所對應的值物件。

二。jsp內建物件

JSP共有以下9種基本內建元件: 
1)request :使用者端請求,此請求會包含來自GET/POST請求的引數 
2)response :網頁傳回使用者端的迴應 
3)pageContext :網頁的屬性是在這裡管理 
4)session :與請求有關的會話期 ,可以儲存使用者的狀態資訊
5)application :servlet 正在執行的內容 ,可用於查詢有關servlet引擎和環境的資訊
6)out :用來傳送回應的輸出
7)config :servlet的構架部件 ,用於存取servlet例項的初始化引數
8)page :JSP網頁本身 
9)exception :針對錯誤網頁,未捕捉的例外;
JSP共有以下6種基本動作:
1)jsp:include:在頁面被請求的時候引入一個檔案。 
2)jsp:useBean:尋找或者例項化一個JavaBean。 
3)jsp:setProperty:設定JavaBean的屬性。 
4)jsp:getProperty:輸出某個JavaBean的屬性。 
5)jsp:forward:把請求轉到一個新的頁面。 
6)jsp:plugin:根據瀏覽器型別為Java外掛生成OBJECT或EMBED標記