一、單選題
1.ArrayList類的底層數據結構是( A )
A、數組結構
B、鏈表結構
C、哈希表結構
D、紅黑樹結構
解析:ArrayList底層的實現就是一個數組(固定大小),當數組長度不夠用的時候就會開辟一個新的數組,然后將原來的數據拷貝到新的數組里面。
2.LinkedList類的特點是(B )
A、查詢快
B、增刪快
C、元素不重復
D、元素自然排序
解析:LinkeList底層是一個鏈表,是由java實現的一個雙向鏈表,其節點如下:
class Node{
private Node privious; //指向前一個節點
private Object value;//當前節點的value值
private Node next;//指向下一個節點的值,類似於指針
}
因此,它具有一般鏈表結構的特點,就是:查詢慢、增刪快。
3.Vector類的特點是( A )
A、線程同步
B、線程不同步
C、增刪快
D、底層是鏈表結構
解析:Vector同ArrayList一樣是在java中可以實現自動增長的對象數組。與ArrayList的一個顯著區別就是Vector是線程安全的,也就是線程同步的。
4.關於迭代器說法錯誤的是( D)
A、迭代器是取出集合元素的方式
B、迭代器的hasNext()方法返回值是布爾類型
C、List集合有特有迭代器
D、next()方法將返回集合中的上一個元素.
解析:迭代器模式:就是提供一種方法對一個容器對象中的各個元素進行訪問,而又不暴露該對象容器的內部細節。
Java.util.Iterator接口的方法如下:
boolean hasNext() 如果仍有元素可以迭代,則返回 true
E next()返回迭代的下一個元素。
List集合特有的迭代器:ListIterator listIterator() 該迭代器繼承了Iterator迭代器,具有Iterator的所有方法。
它還具有特有的功能:
Object previous() 獲取上一個元素
Boolean hasPrevious() 判斷有沒有上一個元素
另外,ListIterator可以逆向遍歷list,但是前提是先正向遍歷,然后才能逆向遍歷。一般情況,不適用。
5.實現下列哪個接口,可以啟用比較功能( D )
A、Runnable接口
B、Iterator接口
C、Serializable接口
D、Comparator接口
解析:
6.下面代碼運行的結果是( A )
ArrayList
al.add(true);
al.add(123);
al.add(“abc”);
System.out.println(al);
A、編譯失敗
B、[true,123]
C、[true,123,abc];
D、[abc];
7.ArrayList和Vector的區別說法正確的是( B )
A、ArrayList是線程安全的,Vector是線程不安全
B、ArrayList是線程不安全的,Vector是線程安全的
C、ArrayList底層是數組結構,Vector底層是鏈表結構
D、ArrayList底層是鏈表結構,Vector底層是數組結構
8.對於HashMap集合說法正確的是( C )
A、底層是數組結構
B、底層是鏈表結構
C、可以存儲null值和null鍵
D、不可以存儲null值和null鍵
9.下面類或者接口中,不屬於集合體系的是( A )
A、java.util.Collections
B、java.util.Map
C、java.util.Vector
D、java.util.Hashtable
10.以下能以鍵_值對的方式存儲對象的接口是( B )
A、java.util.Collection
B、java.util.Map
C、java.util.HashMap
D、java.util.Set
11.在Java中,( A )類可用於創建鏈表數據結構的對象。
A、LinkedList
B、ArrayList
C、Collection
D、HashMap
12.題示代碼的功能為:對於一個存放Person對象的ArrayList進行循
環遍歷。並輸出每個Person對象的idCard和userName。 ( D )
public class Person{
private Long idCard;
pirvate String userName;
//以下是getter和setter方法
//省略
}
List
Person p1=new Person();
p1.setIdCard(new Long(1001));
p1.setUserName(“terry”); Person p2=new Person();
p2.setIdCard(new Long(1002));
p2.setUserName(“tom”);
list.add(p1);
list.add(p2);
for( 位置① ){
System.out.println(person.getIdCard()+”:”+person.getUserName());
}
那么位置①處的代碼為
A、List list:person
B、List list:Person
C、Person person:List
D、Person person:list
13.將集合轉成數組的方法是( C )
A、asList()
B、toCharArray()
C、toArray()
D、copy()
14.使用TreeSet的無參構造創建集合對象存儲元素時,該元素必須 ( A )
A、實現Comparable接口
B、有main方法
C、有get和set方法
D、實現Serializable接口
15.在JAVA中,LinkedList類和ArrayList類同屬於集合框架類,下列( D )選項中的方法是LinkedList類有而ArrayList類沒有的。
A、 add(Object o)
B、 add(int indexObject o)
C、 remove(Object o)
D、 removeLast()
16.在JAVA中ArrayList類實現了可變大小的數組,便於遍歷元素和隨機訪問元素,已知獲得了ArrayList類的對象bookTypeList,則下列語句中能夠實現判斷列表中是否存在字符串“小說”的是(C )。
A、 bookTypeList.add("小說");
B、 bookTypeList.get("小說");
C、 bookTypeList.contains("小說");
D、 bookTypeList.remove("小說");
17.下面關於Collection 和 Collections的區別正確的是( D )
A、Collections是集合頂層接口
B、Collection是針對Collections集合操作的工具類
C、List、Set、Map都繼承自Collection接口
D、Collections是針對Collection集合操作的工具類
18.關於泛型的說法錯誤的是( C )
A、泛型是JDK1.5出現的新特性
B、泛型是一種安全機制
C、使用泛型避免了強制類型轉換
D、使用泛型必須進行強制類型轉換
19.下列哪種不是List集合的遍歷方式 ( D )
A、Iterator迭代器實現
B、增強for循環實現
C、get()和size()方法結合實現
D、get()和length()方法結合實現
20.關於HashMap集合說法正確的是( B )
A、HashMap集合是單列集合
B、HashMap集合不允許存儲重復鍵
C、HashMap集合不允許存儲重復值
D、HashMap集合線程是安全的
二、多選題
1.在我們所學知識中,下面哪幾項是接口( ABCD )
A.java.util.Map
B.java.util.Collection
C.java.util.List
D.java.util.Set
2.Java中的集合類包括ArrayList、LinkedList、HashMap等類,下列關於集合類描述正確的是( ABD )
A.ArrayList和LinkedList均實現了List接口
B.ArrayList的查詢速度比LinkedList快
C.添加和刪除元素時,ArrayList的表現更佳
D.HashMap實現Map接口,它允許任何類型的鍵和值對象,並允許將null用作鍵或值
3.下面關於HashMap和Hashtable的區別,說法正確的是( CD )
A.Hashtable線程不安全,效率高
B.HashMap線程安全,效率低
C.HashMap允許null鍵和值
D.Hashtable不允許null鍵和值
4.關於HashMap集合說法正確的是( AB )
A.HashMap集合是雙列集合
B.HashMap集合不允許存儲重復鍵
C.HashMap集合不允許存儲重復值
D.HashMap集合線程是安全的
5.List集合的遍歷方式有如下哪幾種 ( ABC )
A.Iterator迭代器實現
B.增強for循環實現
C.get()和size()方法結合實現
D.get()和length()方法結合實現
6.下面集合中屬於線程安全的類是( BD )
A.ArrayList B.Vector
C.HashMap D.Hashtable
7.以下哪些繼承自 Collection 接口( AB )
A、List B、Set C、Map D、Array
三、填空
1.List 接口的特點是元素__ 有__(有|無)順序,__ 可以_(可以|不可以)重復;
2.Set 接口的特點是元素__ 無__(有|無)順序, _ 不可以__(可以|不可以)重復;
3.HashMap的底層是__ 數組+鏈表___結構,線程__ 不安全___(安全|不安全)。
4.Collection工具類提供了集合的工具方法,例如排序、復制等,Arrays工具類提供了對數組的工具方法,例如 排序、二分查找等。
5.集合一旦聲明了泛型,便只能存儲__ 泛型指定類型___的對象。
