Collection 接口和 Collections 類都是做什么用的 ?
Collection是集合類的頂級接口。它提供對集合對象進(jìn)行基本操作的通用接口方法。它的直接繼承接口有List,Set和Queue.
Collections是一個包裝類。此類完全由在 collection 上進(jìn)行操作或返回 collection 的靜態(tài)方法組成。它不能被實例化,起到一個工具類的作用
Collection 接口有幾個子接口 ?Map 接口有父接口么 ?
三個子接口,List Set Queue 沒有
List 、 Set 、 Map 三個接口有什么特點(diǎn) ?
List接口繼承Collection接口,稱為有序集合,允許有重復(fù)的元素。
Set接口常用類有HashSet和TreeSet,HashSet儲存順序為無序,TreeSet儲存順序為有序不允許元素的重復(fù)。
Map接口用來處理建-值映射數(shù)據(jù)的儲存,可以儲存多個元素。
請簡述哈希表(散列表)
根據(jù)關(guān)鍵碼值而直接進(jìn)行訪問得數(shù)據(jù)結(jié)構(gòu),通過把關(guān)鍵碼值映射到表中的一個位置來訪問記錄,以加快查找的速度。
以下哪個集合接口支持通過字符串主鍵檢索對象 A
A.Map
B.Set
C.List
D.Collection
以下哪些語句用于創(chuàng)建一個Map實例?D
A.Map m = new Map();
B.Map m = new Map(init capacity,increment capacity);
C.Map m = new Map(new Collection());
D.以上均不行
以下代碼的執(zhí)行結(jié)果是?
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 );
}
}
}
執(zhí)行結(jié)果 abc def def abc def
以下代碼執(zhí)行結(jié)果是?TreeMap和 HashMap 的區(qū)別是什么 ?
執(zhí)行結(jié)果one =1 three = 3 two = 2 TreeMap 是有序的 HashMap是無序的**
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());
}
}
}
Vector、ArrayList 和 LinkedList 有什么區(qū)別 ?
ector是線程安全,性能比ArrayList要差 ArrayList重速度,輕安全,是線程的非安全,需要程序員自己管理線程的同步問題 .Vector和ArrayList有利于節(jié)約空間
LinkedList是link的雙向數(shù)據(jù)列表,可當(dāng)作堆棧、隊列、雙端隊列。鏈表是一種在物理上非連續(xù)、非順序的數(shù)據(jù)結(jié)構(gòu),由若干節(jié)點(diǎn)node所組成
Arrays.ArrayList 和 java.util.ArrayList 有什么區(qū)別 ?
ArrayList是List接口實現(xiàn)類
Arrays.ArrayList 沒有add()方法的,修改元素是通過之前傳過來的數(shù)組進(jìn)行修改
Hashtable和HashMap的區(qū)別
1 Hashtable繼承自Dictionary類 ,而HashMap實現(xiàn)了Map接口
2 Hashtable的方法是同步的,而HashMap的方法不是,消耗一定度資源要增加一些步驟控制增加了處理過程,Hashtable不允許null值(Key和Value都不允許)。
分別使用 HashMap 和 List 以及數(shù)組統(tǒng)計數(shù)組中相同的值出現(xiàn)的次數(shù)
兩次
String[] array = {"abc" , "ABC" , "123" , "def" , "_" , "def" , "abc"};
請寫出 Iterator 迭代器的優(yōu)點(diǎn)
java迭代器查找的唯一操作就是依靠調(diào)用next,而在執(zhí)行查找任務(wù)的同時,迭代器的位置也在改變.
Iterator迭代器remove方法會刪除上次調(diào)用next方法返回的元素.這也意味之remove方法和next有著很強(qiáng)的依賴性.如果在 調(diào)用remove之前沒有調(diào)用next是不合法的 .這個接口衍生出了,java集合的迭代器.java集合的迭代器使用
請寫出循環(huán) List 、Set、Map 的代碼
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);
}
以下哪個集合接口支持元素排序 A
A.Collection
B.Set
C.List
D.Map