Java集合collection编程题及答案

来源:互联网 发布:mac音乐制作软件有哪些 编辑:程序博客网 时间:2024/05/21 22:05

集合框架
Key Point
* Collection 接口、Set 接口、List 接口基本操作
* List 接口及其实现类
* Set 接口及其实现类
迭代遍历
* Hash 算法与hashCode 方法
* Comparable 接口
* Map 接口及其实现类
遍历Map
泛型

..........................................  SB分割线...........................................

1. 填空
Collection 接口的特点是元素是_有些可以重复 有些不可以________
List 接口的特点是元素____有_(有|无)顺序,___可以___(可以|不可以)重复;
Set 接口的特点是元素__ 无序___(有|无)顺序,__不可以__(可以|不可以)重复;
Map 接口的特点是元素是___<key, value>_______,其中_value__可以重复,__key______不可以重复。

2. (List)有如下代码
import java.util.*;
public class TestList{
public static void main(String args[]){
List list = new ArrayList();
list.add(“Hello”);
list.add(“World”);
list.add(1, “Learn”);
list.add(1, “Java”);
printList(list);
}
public static void printList(List list){
//1
}
}
要求:
1) //1 处的代码补充完整,要求输出list 中所有元素的内容

/*System.out.print(list);//方法1*/

Iterator it=list.iterator();//方法二

while(it.hasNext()){

System.out.println(it.next());
2) 写出程序执行的结果

方法一的 结果:

 

方法二的结果:


3) 如果要把实现类由ArrayList 换为LinkedList,应该改哪里?ArrayList 
LinkedList 使用上有什么区别?实现上有什么区别?

只需要中 List list =new ArrayList(); 改变为 List list =new LinkedList(); 即可

arrayList 是数组列表, 其特点是查询速度快 但是删除和添加的速度很慢。

LinkedList 表是链表的列表 其特点是查询速度慢 但是删除和添加数据速度快
4) 如果要把实现类由ArrayList 换为Vector,应该改哪里?ArrayList Vector 使
用上有什么区别?实现上有什么区别?
与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector 的大小可以根据需要增大或缩小

3. List)写出下面程序的运行结果
import java.util.*;
public class TestList{
public static void main(String args[]){
List list = new ArrayList();
list.add(“Hello”);
list.add(“World”);
list.add(“Hello”);
list.add(“Learn”);
list.remove(“Hello”);
list.remove(0);
for(int i = 0; i<list.size(); i++){
System.out.println(list.get(i));
}
}
}

结果是:

 

因为list.remove(“Hello”);这句话 它删除的是list里面的第一个hello

 

4. (SetList
import java.util.*;
public class TestListSet{
public static void main(String args[]){
List list = new ArrayList();
list.add(“Hello”);
list.add(“Learn”);
list.add(“Hello”);
list.add(“Welcome”);
Set set = new HashSet();
set.addAll(list);
System.out.println(set.size());
}
}
选择正确答案
A. 编译不通过
B. 编译通过,运行时异常
C. 编译运行都正常,输出3
D. 编译运行都正常,输出4
结果:

 

答案是C

 

 5.

import java.util.*;
class Worker{
String name;
int age;
double salary;
public Worker(){}
public Worker(String name, int age, double salary){
this.name = name;
this.age = age;
this.salary = salary;
}
int hashCode(){
return name.hashCode() + age + salary;
}
public boolean equals(Worker w){
if (w.name == name && w.salary == salary && w.age == age){
return true;
}else return false;
}
}
public class TestWorker{
public static void main(String args[]){
Set set = new HashSet();
set.add(new Worker(“tom”, 18, 2000));
set.add(new Worker(“tom”, 18, 2000));
set.add(0, new Worker(“jerry”, 18, 2000));
System.out.println(set.size());
}
}
   

首先:set.add(0, new Worker("jerry", 18, 2000));

这句有问题 应该去掉 0

 上文中对应的 这句改成下面的

public int hashCode(){

return (int) (name.hashCode() + age + salary);

 

-----------------------------------game over

这些题目都是比较基础的题目,由于楼主懒惰只整理了这点内容,关于集合类的习题,楼主会逐渐整理出来, 也希望看到我的博客的刚刚学Java的同道中人能认真看一遍,会有所收获的,成就都是一步步来的。。。。。。。。

 

2 0
原创粉丝点击