Java期末考试试题及参考答案(07)

Posted 谷哥的小弟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java期末考试试题及参考答案(07)相关的知识,希望对你有一定的参考价值。


版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址:http://blog.csdn.net/lfdfhl

一、填空题

1. ________ 是所有单列集合的父接口,它定义了单列集合(List和Set)通用的一些方法。
2.使用Iterator遍历集合时,首先需要调用________方法判断是否存在下一个元素,若存在下一个元素,则调用________方法取出该元素。
3.如果要对TreeSet集合中的对象进行排序,必须实现________接口。
4.Map集合中的元素都是成对出现的,并且都是以________、________ 的映射关系存在。
5.ArrayList内部封装了一个长度可变的________。

二、判断题

1.Set集合是通过键值对的方式来存储对象的。
2.ArrayList集合查询元素的速度很快,但是增删改查效率较低。
3.Set接口主要有两个实现类,分别是HashSet和TreeSet。
4.使用Collections工具类中的sort()方法可以对List集合进行排序。
5.java.util.TreeMap底层结构是红黑树(二叉树),由此来保证存贮数据的键的唯一性。

三、选择题

1.下列关于集合的描述中,错误的是( )
A、集合按照存储结构可以分为单列集合Collection和双列集合Map
B、List集合的特点是元素有序、元素可重复
C、Set集合的特点是元素无序并且不可重复
D、集合存储的对象必须是基本数据类型
2.下列关于ArrayList的描述中,错误的是( )
A、ArrayList集合可以看作一个长度可变的数组
B、ArrayList集合不适合做大量的增删操作
C、ArrayList集合查找元素非常便捷
D、ArrayList集合中的元素索引从1开始
3.下面关于java.util.HashMap类中的方法描述错误的是( )
A、containsKey(Object key)表示如果此映射包含对于指定的键,则返回 true
B、remove(Object key)表示从此映射中移除指定键的映射关系(如果存在)
C、values()表示返回此映射所包含的键的Collection视图
D、size()表示返回此映射中的键-值映射关系数
4.使用Iterator时,判断是否存在下一个元素可以使用以下哪个方法( )
A、hasNext()
B、hash()
C、hasPrevious()
D、next()
5.阅读下面的代码:

public class Example
    public static void main(String[] args) 
        String[] strs =  "Tom", "Jerry", "Donald" ;
        // foreach循环遍历数组
        for (String str : strs) 
            str = "Tuffy";
        
        System.out.println(strs[0]+ "," + strs[1] + "," + strs[2]);
    

程序的运行结果是( )
A. Tom,Jerry
B. Tom,Jerry, Tuffy
C. Tom,Jerry,Donald
D. 以上都不对

四、简答题

1.简述集合List、Set和Map的区别。
2.简述为什么ArrayList的增删操作比较慢,查找操作比较快。

五、编程题

  1. 编写一个程序,向ArrayList集合中添加元素,然后遍历输出这些元素。
  2. 请按照下列要求编写程序。
    (1) 编写一个Student类,包含name和age属性,提供有参构造方法。
    (2) 在Student类中,重写toString()方法,输出age和name的值。
    (3) 在Student类中,重写hashCode()和equals()方法 。其中,hashCode()的返回值是name的hash值与age的和;equals()判断对象的name和age是否相同,相同则返回true不同返回false。
    (4)最后编写一个测试类,创建一个HashSet< Student >对象hs,向hs中添加多个Student对象,假设有两个Student对象相等,输出HashSet,观察是否添加成功。

参考答案

一、
1.Collection
2.hashNext() next()
3.Comparable
4.Key(键)、Value(值)
5.数组
二、
1.错
2.对
3.对
4.对
5.对
三、
1.D
2.D
3.C
4.A
5.C
四、
1.
List的特点是元素有序、可重复。List接口的主要实现类有ArrayList和LinkedList。Set的特点是元素无序、不可重复。Set接口的主要实现类有HashSet和TreeSet。Map的特点是存储的元素是键(Key)、值(Value)映射关系,元素都是成对出现的。Map接口的主要实现类有HashMap和TreeMap。
2.
由于ArrayList集合的底层是使用一个数组来保存元素,在增加或删除指定位置的元素时,会导致创建新的数组,效率比较低,因此不适合做大量的增删操作。但这种数组的结构允许程序通过索引的方式来访问元素,因此使用ArrayList集合查找元素很便捷。
五、
1.
Example.java

 	public class Example 
 	    public static void main(String[] args) 
 	        ArrayList list = new ArrayList<>();
 	        list.add("a");
 	        list.add("b");
 	        list.add("c");
 	        list.add("a");
 	        for(Iterator it = list.iterator();it.hasNext();)
 	            System.out.println(it.next());
 	        
 	    
 	

Test.java

import java.util.*;
class Student 
    private int age;
    private String name;
    public Student(int age, String name) 
        this.age = age;
        this.name = name;
    
    public String toString() 
        return age + ":" + name;
    
    public int hashCode() 
        return name.hashCode() + age;
    
    public boolean equals(Object obj) 
        if (this == obj)
            return true;
        if (!(obj instanceof Student))
            return false;
        Student stu = (Student) obj;
        return this.name.equals(stu.name) && this.age == stu.age;
    


public class Test 
    public static void main(String[] args) 
        HashSet<Student> hs = new HashSet<Student>();
        hs.add(new Student(18, "zhangsan"));
        hs.add(new Student(20, "lisa"));
        hs.add(new Student(20, "lisa"));
        System.out.println(hs);
    


以上是关于Java期末考试试题及参考答案(07)的主要内容,如果未能解决你的问题,请参考以下文章

前端期末考试试题及参考答案(07)

前端期末考试试题及参考答案(07)

前端期末考试试题及参考答案(07)

MySQL数据库期末考试试题及参考答案(07)

MySQL数据库期末考试试题及参考答案(07)

Java期末考试试题及参考答案(01)