文章目录
Key Point:
- Collection 接口、Set 接口、List 接口基本操作
- List 接口及其实现类
- Set 接口及其实现类
- 迭代遍历
- Hash 算法与 hashCode 方法
- Comparable 接口
- Map 接口及其实现类
- 遍历 Map
填空
- Collection 接口的特点是元素是 单列;
- List 接口的特点是元素 有 顺序,可以 重复;
- Set 接口的特点是元素 无 顺序, 不可以 重复;
- 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))