练习题
当前位置:首页 > 其他范文 > 练习题 > 列表页

java集合练习题

小草范文网  发布于:2016-10-16  分类: 练习题 手机版

篇一:java集合-练习题

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

for(int i = 0; i< list.size();i++){

System.out.println(list.get(i));

}

for(Object o : list) {

System.out.println(o);

}

Iterator itor = list.iterator();

while(itor.hasNext()){

System.out.println(itor.next());

}

}

}

要求:

1) 把//1 处的代码补充完整,要求输出list 中所有元素的内容

2) 写出程序执行的结果Hello Java Learn World

3) 如果要把实现类由ArrayList 换为LinkedList,应该改哪里?ArrayList 和

LinkedList 使用上有什么区别?实现上有什么区别?

4) 如果要把实现类由ArrayList 换为Vector,应该改哪里?ArrayList 和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));

}

}

}

结果: Hello Learn

4. (Set,List)

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());

}

}

选择正确答案 C

A. 编译不通过

B. 编译通过,运行时异常

C. 编译运行都正常,输出3

D. 编译运行都正常,输出4

5. (List)已知有一个Worker 类如下:

public class Worker {

private int age;

private String name;

private double salary;

public Worker (){}

public Worker (String name, int age, double salary){

this.name = name;

this.age = age;

this.salary = salary;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public double getSalary(){

return salary;

}

public void setSalary(double salary){

this.salary = salary;

}

public void work(){

System.out.println(name + “ work”);

}

}

完成下面的要求

1) 创建一个List,在List 中增加三个工人,基本信息如下:

姓名 年龄 工资

zhang3 18 3000

li4 25 3500

wang5 22 3200

2) 在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300

3) 删除wang5 的信息

4) 利用for 循环遍历,打印List 中所有工人的信息

5) 利用迭代遍历,对List 中所有的工人调用work 方法。

6) 为Worker 类重写equals 方法,当姓名、年龄、工资全部相等时候才返回true

6. (Set,Hash 算法)为上一题的Worker 类,在添加完equals 方法的基础上,添加一个 hashCode 方法。

public int hashCode(){

//1

}

有几种写法:

1) return 0;

2)

int result = 0;

if (name != null) result = name.hashCode();

return result + age;

3) return super.hashCode();

现在要把Worker 类放入HashSet 中,并希望在HashSet 中没有重复元素,则下面说法正 确的是:

A. 三种写法都正确

B. 1), 2)写法正确,2)效率更高

C. 2)写法正确,1),3)写法都不正确

7. (Set,Hash 算法,方法覆盖)代码改错

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());

}

}

8. (Set,Hash 算法)在前面的Worker 类基础上,为Worker 类增加相应的方法,使得

Worker

放入HashSet 中时,Set 中没有重复元素。

并编写相应的测试代码。

9. (Set,Comparable 接口)在前面的Worker 类基础上,为Worker 类添加相应的代码, 使得Worker 对象能正确放入TreeSet 中。并编写相应的测试代码。

注:比较时,先比较工人年龄大小,年龄小的排在前面。如果两个工人年龄相同,则再 比较其收入,收入少的排前面。如果年龄和收入都相同,则根据字典顺序比较工人姓名。例 如:有三个工人,基本信息如下:

姓名 年龄 工资

zhang3 18 1500

li4 18 1500

wang5 18 1600

zhao6 17 2000

放入TreeSet 排序后结果为:

zhao6 li4 zhang3 wang5

//Worker

10. (Map)关于下列Map 接口中常见的方法

put 方法表示放入一个键值对,如果键已存在则__覆盖___,如果键不存在则

____添加_____。

remove 方法接受__1_个参数,表示______key____________。

get 方法表示_______获得key对应的value________________,get 方法的参数表示__key___,返回值表示__value__。

要想获得Map 中所有的键,应该使用方法__keySet_________,该方法返回值类型为____Set<key>__。

要想获得Map 中所有的值,应该使用方法__values_________,该方法返回值类型为_Collection<Value>______。

要想获得Map 中所有的键值对的集合,应该使用方法_entrySey__________,该方法返回一个

_Map.Entry<K,V>_____类型所组成的Set。

11. (Map)利用Map,完成下面的功能:

从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队。如果该 年没有举办世界杯,则输出:没有举办世界杯。

附:世界杯冠军以及对应的夺冠年份,请参考本章附录。

附录

1. 截止到2009 年为止,历届世界杯冠军

篇二:java 集合框架(习题与答案)

java 集合框架(习题)

集合框架

Key Point

* Collection 接口、Set 接口、List 接口基本操作

* List 接口及其实现类

* Set 接口及其实现类

* 迭代遍历

* Hash 算法与hashCode 方法

* Comparable 接口

* Map 接口及其实现类

* 遍历Map

* 泛型

练习

1. 填空

Collection 接口的特点是元素是对象;

List 接口的特点是元素有(有|无)顺序,可以(可以|不可以)重复;

Set 接口的特点是元素无(有|无)顺序,不可以(可以|不可以)重复;

Map 接口的特点是元素是键值对,其中值可以重复,键不可以重复。

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){

for(Object obj:list){

String str=(String)obj;

System.out.println(obj);

}

}

}

要求:

1) 把//1 处的代码补充完整,要求输出list 中所有元素的内容

2) 写出程序执行的结果Hello java Learn World

3) 如果要把实现类由ArrayList 换为LinkedList,应该改哪里?ArrayList 和

LinkedList 使用上有什么区别?实现上有什么区别?

把实例化的语句改为new LinkedList();

ArrayList数组实现查询快 增删慢

LinkedList 链表实现查询慢 增删快

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

ArrayList是线程不同步的,轻量级的,线程不安全,速度快

Vector是线程同步的 ,多线程访问比较安全,速度慢

3. (List)写出下面程序的运行结果

import java.util.*;

public class TestList{

public static void main(String args[]){

List list = new ArrayList();

li(本文来自:wwW.xIAocAofaNwEn.com 小 草范 文 网:java集合练习题)st.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));

}

}

}

Hello

Learn

4. (Set,List)

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. 编译运行都正常,//输出HashSet中不能放重复值

D. 编译运行都正常,输出4

5. (List)已知有一个Worker 类如下:

public class Worker {

private int age;

private String name;

private double salary;

public Worker (){}

public Worker (String name, int age, double salary){

this.name = name;

this.age = age;

this.salary = salary;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public double getSalary(){

return salary;

}

public void setSalary(double salary){

this.salary = salary;

}

public void work(){

System.out.println(name + “ work”);

}

}

完成下面的要求

1) 创建一个List,在List 中增加三个工人,基本信息如下:

姓名 年龄 工资

zhang3 18 3000

li4 25 3500

wang5 22 3200

2) 在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300

3) 删除wang5 的信息

4) 利用for 循环遍历,打印List 中所有工人的信息

5) 利用迭代遍历,对List 中所有的工人调用work 方法。

6) 为Worker 类添加equals 方法

6. (Set,Hash 算法)为上一题的Worker 类,在添加完equals 方法的基础上,添加一个 hashCode 方法。

public int hashCode(){

//1

}

有几种写法:

1) return 0;

2)

int result = 0;

if (name != null) result = name.hashCode();

return result + age;

3) return super.hashCode();

现在要把Worker 类放入HashSet 中,并希望在HashSet 中没有重复元素,则下面说法正 确的是:

A. 三种写法都正确

B. 1), 2)写法正确,2)效率更高

C. 2)写法正确,1),3)写法都不正确

7. (Set,Hash 算法,方法覆盖)代码改错

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;

}

public int hashCode(){//hashCode必须声明为公共的。

return (int)(name.hashCode() + age + salary);//返回值类型为整形(

}

//equals方法实现有错

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));//HashSet中没有定义带下标的add方法。 System.out.println(set.size());

}

}

8. (Set,Hash 算法)在前面的Worker 类基础上,为Worker 类增加相应的方法,使得Worker

放入HashSet 中时,Set 中没有重复元素。

并编写相应的测试代码。

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;

}

public int hashCode(){

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

}

public boolean equals(Worker w){

if (w.name == name && w.salary == salary && w.age == age){

return true;

}else return false;

}

}

9. (Set,Comparable 接口)在前面的Worker 类基础上,为Worker 类添加相应的代码, 使得Worker 对象能正确放入TreeSet 中。并编写相应的测试代码。

注:比较时,先比较工人年龄大小,年龄小的排在前面。如果两个工人年龄相同,则再 比较其收入,收入少的排前面。如果年龄和收入都相同,则根据字典顺序比较工人姓名。例 如:有三个工人,基本信息如下:

姓名 年龄 工资

zhang3 18 1500

li4 18 1500

wang5 18 1600

zhao6 17 2000

放入TreeSet 排序后结果为:

zhao6 li4 zhang3 wang5

篇三:java复习题集合

一、选择题(没有注明多选,则为单选)

1、 在某个类中存在一个方法:void getSort(int x),以下能作为这个方法的重载的声明的是:

A.

B.

C. D.

A.

B. C. D.

A.

B. C.

D.

A.

B.

C.

D.

A.

B.

C.

D.

A.

B.

C.

D. public getSort(float x) int getSort(int y) double getSort(int x,int y) void get(int x,int y) Tree&Glasses FirstJavaApplet _$theLastOne 273.5 1 2 3 4 将会顺利通过编译,并将产生一个Student.class的类文件 编译时在//3处出错 编译时在//2处出错 编译时在//1处出错 float value = new Float(str); float value = Float.parseFloat(str); float value = Float.floatValue(str); float value = (new Float()).parseFloat(str); transient finally throw static

1-1

2、 下列哪个是合法的Java标识符:(两个答案) 3、 设 a = 8,则表达式 a >>> 2 的值是: 4

使用如下指令编译:javac Student.java将会得到什么结果? 5、 下面选项中能把字符串转换成float类型的是?: 6、 哪个关键字可以抛出异常?

7、 main()方法的返回类型是:

A.

B. C.

D.

A.

B.

C.

D. int void boolean static java.util java.io java.awt java.lang 8、 System类在哪个包中?

9、 对于下列代码:

public class Parent {

public int addValue( int a, int b) {

int s;

s = a+b;

return s;

}

}

class Child extends Parent {

}

下述哪些方法可以加入类Child?

A.

B.

C.

D. int addValue( int a, int b ){// do something...} public void addValue (int a, int b ){// do something...} public int addValue( int a ){// do something...} public int addValue( int a, int b )throws MyException {//do something...}

10、 给出下面代码:

public class test{

static int a[] = new a[10];

public static void main(String args[]) {

System.out.println(arr[10]);

}

}

那个选项是正确的?

A.

B.

C.

D. 编译时将产生错误; 编译时正确,运行时将产生错误; 输出零; 输出空。

1-2

A.

B.

C.

D.

A.

B.

C.

D. 0 1 程序编译失败 程序抛出异常 Base BaseBase 程序编译失败. 程序运行但没有任何输出

A.

B.

C.

D. public void aMethod() { } private void aMethod() { } public void aMethod(String s) { } private Y aMethod() { return null; }

A.

B.

C.

D.

Hello10 Hello91 Hello10.0 程序编译失败

14、 下列说法正确的是?

A.

B.

C.

一个子类可以有多个父类,一个父类也可以有多个子类 一个子类可以有多个父类,但一个父类只可以有一个子类 一个子类可以有一个父类,但一个父类可以有多个子类 1-3

D. 上述说法都不对

A.

B.

C.

D.

A.

B.

C.

D. 编译成功 在第6行产生一个运行时异常 在第6行产生一个编译错误 在第2行产生一个编译错误

i=0i=10 程序有编译错误 i=true

A.

B.

C.

D. int byte long double

1-4

A.

B.

C.

D. Equal Not Equal 编译失败 程序没有任何输出结果

A.

B.

C.

D.

E.

A.

B.

C.

D. char byte float double object

678 122-98733 21、 Given:

1. int i= 1, j= 10 ;

2. do{

3. if (i++> --j) continue;

4. } while (i<5);

After execution, what are the values for i and j?

A.

B.

C.

D.

E. i = 6 and j= 5 i = 5 and j= 5 i = 6 and j= 4 i = 5 and j= 6 i = 6 and j= 6

22、 Given:

1. switch (i) {

2. default:

1-5

本文已影响