实验七对象集合的组织
实验目标:
1. 了解Collection、List、Set、Map等常用数据结构的层次结构
2. 掌握LinkList、Vector、ArrayList、HashTable、HashMap等类的用法 3. 掌握Enumeration(枚举)及Iterator(迭代器)的遍历用法 4. 了解自学HashSet、TreeSet这两个Set接口下的重要实现类 5. 了解自学比较器接口 实验任务:
1. 填空
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){ //1
} }
要求:
1) 把//1 处的代码补充完整,要求输出list 中所有元素的内容,请使用三种方式来实现(课本227页,Iterator、增强for循环,普通循环)。
2) 三种代码与执行结果截图 1、用Iterator实现的代码如下:
package zi;
import java.util.*; publicclass Ex7_2{
publicstaticvoid main(String args[]){ List list = newArrayList(); list.add(\); list.add(\); list.add(1, \);
list.add(1, \); printList(list); }
publicstaticvoid printList(List list){ //1
Iterator itor = list.iterator(); while(itor.hasNext()){
System.out.println(itor.next()); } } }
其运行结果截图如下:
2、用增强for循环的代码如下:
package zi;
import java.util.*; publicclass Ex7_2{
publicstaticvoid main(String args[]){ List list = newArrayList(); list.add(\); list.add(\); list.add(1, \); list.add(1, \); printList(list); }
publicstaticvoid printList(List list){ //1 } }
for(Object o : list) {
System.out.println(o); }
其运行结果截图如下:
3、用普通循环的代码如下:
package zi;
import java.util.*; publicclass Ex7_2{
publicstaticvoid main(String args[]){ List list = newArrayList(); list.add(\); list.add(\); list.add(1, \); list.add(1, \); printList(list); }
publicstaticvoid printList(List list){ //1 } }
for(int i = 0; i< list.size();i++){
System.out.println(list.get(i)); }
其运行结果截图如下:
3) 如果要把实现类由ArrayList 换为LinkedList,应该改哪一句?怎么修改?ArrayList
和LinkedList 使用上有什么区别?请书面回答 答:List list = new LinkedList();
ArrayList :查询数据速度较快,插入和删除比较慢,线程非安全。 LinkedList: 查询数据速度较慢,插入和删除比较快,线程安全。
4) 如果要把实现类由ArrayList 换为Vector,应该改哪一句?怎修改?ArrayList 和Vector 使用上有什么区别?请书面回答。 答:List list = new Vector();
Vector:以线性结构存储,查询速度较慢,线程安全。
3. (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 中增加三个工人,基本信息包括:姓名年龄工资。 答:增加三个工人赵一,钱二,孙三及其他们的年龄和工资,其代码如下:
package zi;
import java.util.ArrayList; import java.util.List; class Worker { privateintage; private String name; privatedoublesalary; public Worker (){}
public Worker (String name, int age, double salary){ this.name = name; this.age = age; this.salary = salary; }
publicint getAge() { returnage; }
publicvoid setAge(int age) { this.age = age; }
public String getName() { returnname; }
publicvoid setName(String name) { this.name = name; }
publicdouble getSalary(){ returnsalary; }
publicvoid setSalary(double salary){ this.salary = salary; }
publicvoid work(){
System.out.println(name + \); } }
publicclass Ex7_3_1{
publicstaticvoid main(String args[]){ List