Java集合 练习题(八)

Key Point:

  1. Collection 接口、Set 接口、List 接口基本操作
  2. List 接口及其实现类
  3. Set 接口及其实现类
  4. 迭代遍历
  5. Hash 算法与 hashCode 方法
  6. Comparable 接口
  7. Map 接口及其实现类
  8. 遍历 Map

填空

  1. Collection 接口的特点是元素是 单列
  2. List 接口的特点是元素 顺序,可以 重复;
  3. Set 接口的特点是元素 顺序, 不可以 重复;
  4. Map 接口的特点是元素是 双列 ,其中 value 可以重复, key 不可以重复。

01.(List)有如下代码

import java.util.*;
public class TestList{
   
	public static void main(String args[]){
   
		List<String> list = new ArrayList<String>();
		list.add("Hello");
		list.add("World");
		list.add(1,"Learn");
		list.add(1,"Java");
		printList(list);
	}
	public static void printList(List list){
   
		//1 要求输出 list 中所有元素的内容
		System.out.println("方式一:");
		Iterator iterator = list.iterator();
		while(iterator.hasNext()){
   
			System.out.print(iterator.next()+" ");
		}
		System.out.println("\n方式二:");
		for(Object obj: list){
   
			System.out.print(obj+" ");
		}
		System.out.println("\n方式三:");
		for(int i = 0; i < list.size(); i++){
   
			System.out.print(list.get(i)+" ");
		}
		
	}
}
	要求:
	I.//1 处的代码补充完整,要求输出 list 中所有元素的内容
	II. 写出程序执行的结果
	III. 如果要把实现类由 ArrayList 换为 LinkedList,应该改哪里?
		ArrayList 和 LinkedList 使用上有什么区别?实现上有什么区别?
	IV. 如果要把实现类由 ArrayList 换为 Vector,应该改哪里?ArrayList 
		和 Vector 使用上有什么区别?实现上有什么区别?

答案:

方式一:
Hello Java Learn World 
方式二:
Hello Java Learn World 
方式三:
Hello Java Learn World 

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

import java.util.*;
public class TestList{
   
	public static void main(String args[]){
   
		List<String> list = new ArrayList<String>();
		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

03.(Set,List)

import java.util.*;
public class TestListSet{
   
	public static void main(String args[]){
   
		List<String> list = new ArrayList<String>();
		list.add("Hello");
		list.add("Learn");
		list.add("Hello");
		list.add("Welcome");
		Set<String> set = new HashSet<String>();
		set.addAll(list);
		System.out.println(set.size());//3
	}
}

选择正确答案
A. 编译不通过
B. 编译通过,运行时异常
C. 编译运行都正常,输出 3 
D. 编译运行都正常,输出 4

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

package com.exer2;

import java.util.*;


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;
	}

	@Override
	public int hashCode() {
   
		final int prime = 31;
		int result = 1;
		result = prime * result + age;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		long temp;
		temp = Double.doubleToLongBits(salary);
		result = prime * result + (int) (temp ^ (temp >>> 32));
		return result;
	}
	
	@Override
	public boolean equals(Object obj) {
   
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Worker other = (Worker) obj;
		if (age != other.age)
			return false;
		if (name == null) {
   
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			
  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值