<p align="center">容器作业
<p class="1">一、??? 填空题
- Java集合框架提供了一套性能优良、使用方便的接口和类,包括Collection和Map两大类,它们都位于包中
- 队列和堆栈有些相似,不同之处在于。
-
结构是一种由多个节点组成的线性数据结构,并且每个节点包含有数据以及指向下一个节点的引用。
- ____LinkedList__________是一种集合类,它?采用链表作为的存储结构,便于删除和添加元素,但是按照索引查询元素效率低下。
-
是一种Collection类型的集合类,其中元素唯一,并采用二叉树作为存储结构,元素按照自然顺序排列。
- 如果希望将自定义类Student的多个对象放入集合TreeSet,实现所有元素按照某个属性的自然顺序排列,则需要Student类实现_________接口。
- 在Java中集合的访问时间接近稳定,它是一种键值对映射的数据结构。这个数据结构是通过数组来实现的。
- 迭代器Iterator为集合而生,专门实现集合遍历,该接口有三个方法,分别是hasNext() 、_______、remove()。
二、??? 选择题
1.
以下选项中关于Java集合的说法错误的是( AC?? )。(选择二项)
A.
B.
C.
D.
?
2.
如下Java代码,输出的运行结果是(? A? )。(选择一项)
?
public class Test {
public static void main(String[ ] args) {
list=new ArrayList();
out.println(s);
A
运行时出现异常
B.
C.
正确运行,输出str2
D.
编译时出现异常
?
3.
以下Java代码的作用是首先将一个数组的内容存入集合,然后判断集合中是否有指定的元素存在,其中共有(??? )处错误。(选择一项)
?
import java.util.List;
public class Test {
public int getIndexofArray(float[] f){
int rtn=-1;
float objf=3.4;
null;
for(int i=0;i
for(int i=0;i
float tmp=(float)list.get(i);
if(objf==tmp){
return rtn;
A
B.
C.
2
D.
3
?
4.
分析如下Java 代码,编译运行后将输出( B? ?)。(选择一项)
?
public class Test {
public Test() {
static void print(List al) {
new ArrayList();
public static void main(String[] args) {
al = new ArrayList();
print(al);
out.println(al.get(1));
A
1
B.
C.
3
D.
4
?
5.
在Java中,下列集合类型可以存储无序、不重复的数据的是(? D? )。(选择一项)
A
ArrayList
B.
C.
TreeSet
D.
HashSet
?
6.
以下代码的执行结果是( C ??)。(选择一项)
?
s=new HashSet();
out.println(s.size());
A.
B.
C.
D.
?
7.
给定如下Java代码,编译运行的结果是( C?? )。(选择一项)
?
public class Test {
public static void main(String[] args) {
map = new HashMap();
out.println(map.size());
}
A
编译时发生错误
B.
C.
正确运行,输出:1
D.
正确运行,输出:2
?
8.
下面集合类中属于非线程安全,且结构采用了哈希表的是(? C ?)。(选择一项)
A.
B.
C.
D.
?
9.
?
在Java中,LinkedList类与ArrayList类同属于集合框架类,下列( CD?? )选项中是LinkedList类有而ArrayList类没有的方法。(选择两项)
A
add(Object o)
B.
C.
getFirst()
D.
removeLast()
三、??? 判断题
- 数组和集合中的元素可以是任何数据类型,包括基本类型和引用类型。(? F )
- Java集合中的Set接口和List接口都是从Collection接口派生出来的。(?? T )
- Collection 接口存储一组不唯一,有序的对象,它有两个子接口:List和Set。(? F? )
- Collection是Java集合顶级接口,其中的元素无序,唯一。Java平台不提供这个接口任何直接的实现。( F?? )
- List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引来访问List中的无素,这类似于Java的数组。(? T? )
- HashSet采用哈希表存储结构,特点是查询速度快,但是其中元素无序排列。(T??? )
- LinkedHashMap是一种有序的HashMap,查询速度快,便于添加删除操作。(?? T )
- 基本数据类型的值可以被直接存储在Vector对象中。(F??? )
- Dictionary建立了关键字和值的映射,只要提供一个关键字,Dictionary就会返回一个相应的值。(T??? )
- 泛型是JavaSE1.7(1.5)的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。Java语言引入泛型的好处是安全简单。( F?? )
- Collection是专门操作集合的工具类,提供一系列静态方法实现对各种集合操作。( F?? )Collection是接口类型,存放单值的最大接口;
?Collections是操作集合的工具类,就像数组一样,Arrays类是数组工具类。
- Iterator接口可以遍历任何Collection接口的实现类,可以从一个Collection中使用iterator( )方法来获取迭代器实例。迭代器取代了Java集合框架中的Enumeration。(? T? )
四、???
简答题
- 集合和数组的比较
相同点:都是数据的容器,一个在数组或集合中可以储存多个数据。
不同点:1.元素:数组中的元素只能是相同;集合中的元素是任意的(泛型) 数组中可以存储基本类型和引用类型,集合只能存储引用类型
2.长度(元素个数):数组是定长的,一旦初始化长度就不可以修改;集合长度可以修改,可以删除元素和添加元素。
- 简述List、Set、Collection、Map的区别和联系。
- ArrayList和LinkedList的区别和联系。
ArrayList:底层是可变数组
??? ?? 特点:一种线性的数据结构,连续存储
????????? ? ??? 查询快,增删慢?? 不同步(效率高,不安全)
??? ??LinkedList:底层是链表结构,可以添加null元素,并且可以添加多个null
????? 特点:链表:链接列表,是一种线性结构,一条线把每个节点串联起来节点的组成
- HashSet采用了哈希表作为存储结构,请说明哈希表的特点和实现原理。
提示:结合Object类的hashCode()和equals()说明其原理
HashSet:equals返回true,hashCode返回相同的整数;哈希表;存储的数据是无序的。成员可为任意Object子类的对象,但如果覆盖了equals方法,同时注意修改hashCode方法。
HashMap键成员可为任意Object子类的对象,但如果覆盖了equals方法,同时注意修改hashCode方法。
特点:访问速度快
大小不受限制
? ??按键进行索引,没有重复对象
? ?用字符串(id:string)检索对象(object)
基本原理:我们使用一个下标范围比较大的数组来存储元素。可以设计一个函数(哈希函数,
也叫做散列函数),使得每个元素的关键字都与一个函数值(即数组下标)相对应,于是用这个数组单元来存储这个元素;也可以简单的理解为,按照关键字为每一 个元素“分类”,然后将这个元素存储在相应“类”所对应的地方。
但是,不能够保证每个元素的关键字与函数值是一一对应的,因此极有可能出现对于不同的元素,却计算出了相同的函数值,这样就产生了“冲突”,换句话说,就是把不同的元素分在了相同的“类”之中。后面我们将看到一种解决“冲突”的简便做法。
总的来说,“直接定址”与“解决冲突”是哈希表的两大特点。
- Vector和ArrayList的区别和联系。
? ??? ?Vector的方法都是同步的,是线程安全的,当元素超过它的初始大小时,Vector会将它的容量翻倍
ArrayList的方法是不同步的,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。ArrayList只增加50%的大小,这样,ArrayList就有利于节约内存空间。
- 请你简述HashMap和Hashtable的区别?
五、???
编码题
- 使用List和Map存放多个图书信息,遍历并输出。其中商品属性:编号,名称,单价,出版社;使用商品编号作为Map中的key。
-
ID = .name = .price = .publish =
ID =
.name =
.price =
.publish =
ID+"t"+ name+"t"+price+"t"+
Book b1 = Book("A101","苦难与辉煌",100D,"清华大学出版社" Book b2 = Book("A102"," 欲血荣光",50D,"北京大学出版社" Book b3 = Book("A103"," 红岩t",75D,"人民出版社" Book b4 = Book("A104"," 林海雪原",45D,"清华大学出版社" List l = ArrayList<> System.out.println("=============使用List存放多个图书信息,遍历并输出=============" System.out.println("编号t名称tt单价t出版社" Iterator it =
System.out.println("n=============使用Map存放多个图书信息,遍历并输出=============" Map m = HashMap<> System.out.println("编号t名称tt单价t出版社"
}
- 使用HashSet和TreeSet存储多个商品信息,遍历并输出;其中商品属性:编号,名称,单价,出版社;要求向其中添加多个相同的商品,验证集合中元素的唯一性。
-
提示:向HashSet中添加自定义类的对象信息,需要重写hashCode和equals( )
???????? ?向TreeSet中添加自定义类的对象信息,需要实现Comparable接口,指定比较规则
Products Comparable
ID = .name = .price = .pbulish =
ID =
.name =
.price =
.pbulish =
prime = 31 result = 1 result = prime * result + ((ID == ) ? 0 result = prime * result + ((name == ) ? 0 result = prime * result + ((pbulish == ) ? 0 result = prime * result + ((price == ) ? 0
( == (obj == (getClass() != Products other = (ID == (other.ID != } (! (name == (other.name != } (! (pbulish == (other.pbulish != } (!
|