1. Collection 接口和 Collections 類都是做什么用的 焦人?
Collection 是一個(gè)集合接口。它提供了對集合對象進(jìn)行基本操作的通用接口方法重父。
Collections 是一個(gè)包裝類花椭。它包含有各種有關(guān)集合操作的靜態(tài)方法(對集合的搜索、排序房午、線程安全化等)矿辽。
2. Collection 接口有幾個(gè)子接口 ?Map 接口有父接口么 郭厌?
三個(gè)子接口 List Set Queue袋倔,沒有父接口。
3. List 折柠、 Set 宾娜、 Map 三個(gè)接口有什么特點(diǎn) ?
List:可以精確控制列表中每一個(gè)元素的插入位置扇售,可以容納所有類型的對象前塔,包括null(允許多個(gè))嚣艇,允許重復(fù),可以保障元素的儲(chǔ)存順序华弓。
Set:可以容納所有類型的對象食零,包括null(只允許一個(gè)),不允許重復(fù)该抒,無法保證每個(gè)元素的存儲(chǔ)順序慌洪。
Map: 1、Map不是collection的子接口或者實(shí)現(xiàn)類凑保,Map是一個(gè)接口冈爹。
2、Map 的 每個(gè) Entry 都持有兩個(gè)對象欧引,也就是一個(gè)鍵一個(gè)值频伤,Map 可能會(huì)持有相同的值對象但鍵對象必須是唯一的。
3芝此、Map 里你可以擁有隨意個(gè) null 值但最多只能有一個(gè) null 鍵憋肖。
4. 請簡述哈希表(散列表)
這種數(shù)據(jù)結(jié)構(gòu)提供了鍵和值的映射關(guān)系,只有給出一個(gè)鍵婚苹,就可以高效的查找到它所匹配的值岸更。或根據(jù)關(guān)鍵碼值key value直接進(jìn)行訪問記錄的數(shù)據(jù)結(jié)構(gòu)膊升。其中映射函數(shù)叫做散列函數(shù)怎炊,存放記錄的數(shù)組叫做散列表。
5. 以下哪個(gè)集合接口支持通過字符串主鍵檢索對象 A
A.Map
B.Set
C.List
D.Collection
6. 以下哪些語句用于創(chuàng)建一個(gè)Map實(shí)例廓译?D
A.Map m = new Map();
B.Map m = new Map(init capacity,increment capacity);
C.Map m = new Map(new Collection());
D.以上均不行
7. 以下代碼的執(zhí)行結(jié)果是评肆?
```java
public class Example {
public static void main(String[] args) {
String s1 = "abc";
String s2 = "def";
String s3 = "def";
List<String> list = new ArrayList<String>();
list.add(s1);
list.add(s2);
list.add(s3);
for (String string : list) {
System.out.println( string );
}
System.out.println("-------------------");
Set<String> set = new HashSet<>();
set.add(s1);
set.add(s2);
set.add(s3);
for (String string : set) {
System.out.println( string );
}
}
}
/*abc abc
def def
def*/
-
以下代碼執(zhí)行結(jié)果是?TreeMap和 HashMap 的區(qū)別是什么 非区?
public class Example { public static void main(String[] args) { TreeMap<String, String> map = new TreeMap<String, String>(); map.put("one", "1"); map.put("two", "2"); map.put("three", "3"); displayMap(map); } static void displayMap(TreeMap map) { Collection<String> c = map.entrySet(); Iterator<String> i = c.iterator(); while (i.hasNext()) { Object o = i.next(); System.out.print(o.toString()); } } } /*one=1three=3two=2 TreeMap有序的 HashMap 無序的 */
-
Vector瓜挽、ArrayList 和 LinkedList 有什么區(qū)別 ?
ArrayList 和Vector都是基于數(shù)組實(shí)現(xiàn)存儲(chǔ)的征绸,集合中的元素的位置都是有順序即連續(xù)的久橙;LinkedList是基于雙向鏈表實(shí)現(xiàn)存儲(chǔ)的,集合中的元素的位置是不連續(xù)的管怠。
Vector是使用了synchronized同步鎖是線程安全的剥汤,ArrayList和LinkedList都是線程不安全的
-
Arrays.ArrayList 和 java.util.ArrayList 有什么區(qū)別 ?
ArrayList是List接口的實(shí)現(xiàn)類
Arrays.ArrayList是沒有add()方法的排惨,并且修改元素也是通過修改之前傳遞進(jìn)去的固定長度數(shù)組來實(shí)現(xiàn)吭敢,這就是為什么修改它的元素會(huì)直接影響傳進(jìn)來的數(shù)組。
-
Hashtable和HashMap的區(qū)別
1.Hashtable 繼承自Dictionary類暮芭,而HashMap實(shí)現(xiàn)了Map接口
2.Hashtable的方法是同步的鹿驼,而HashMap的方法不是
3..Hashtabl 重速度欲低,輕安全,是線程非常安全的畜晰,HashMap允許null值砾莱,需要程序員自己管理線程的同步問題。
-
分別使用 HashMap 和 List 以及數(shù)組統(tǒng)計(jì)數(shù)組中相同的值出現(xiàn)的次數(shù)
String[] array = {"abc" , "ABC" , "123" , "def" , "^_^" , "def" , "abc"}; /* abc 2 123 1 def 2 ^_^ 3*/
13. 請寫出 Iterator 迭代器的優(yōu)點(diǎn)
可以邊遍歷邊刪除
14. 請寫出循環(huán) List 凄鼻、Set腊瑟、Map 的代碼
```java
for( 集合元素類型 i : list ) {
System.out.println(i)
}
for( 集合元素類型 i : Set ) {
System.out.println(i)
}
for (Map.Entry<String,String> m : map01.entrySet()) {
System.out.println(m);
}
-
以下哪個(gè)集合接口支持元素排序 A
A.Collection
B.Set
C.List
D.Map