Java 泛型与集合


1、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 方法。

public class Worker {
    private int age;
    private String name;
    private double salary;

    public Worker() {
    }

    public Worker(int age, String name, double salary) {
        super();
        this.age = age;
        this.name = name;
        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;
    }

    @Override
    public String toString() {
        return "Worker [age=" + age + ", name=" + name + ", salary=" + salary + "]";
    }
}
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class TestWorker {
    
    public static void main(String[] args) {
        
        List list = new ArrayList<>();
        
        list.add(new Worker(18,"zhang3",3000));
        list.add(new Worker(25,"li4",3500));
        list.add(new Worker(22,"wang5",3200));
        
        
        list.add(1,new Worker(24,"zhao6",3300));
    
        
        list.remove(3);
        
        for(int i = 0;i)
        {
            System.out.println(list.get(i));
        }
        
        
        System.out.println("迭代器方式");
        Iterator it= list.iterator();
        //判断能否移动
        while(it.hasNext())
        {
            //移动指针到下一条数据,同时获取数据
            Worker p=it.next();
            System.out.println(p.toString());
            

        }
    }

}

2、List集合遍历

在程序开发中,经常需要遍历集合中的所有元素。针对这种需求,JDK专门提供了一个接口Iterator。为了使初学者熟悉Iterator迭代器的使用,本案例将演示如何使用Iterator迭代器遍历集合中的元素。

设计思路(实现原理)

1)  编写一个类Example02

2)  在类中定义一个List集合,并向集合中添加数据

3)  通过调用List集合的iterator()方法获得迭代器对象

4)  在while循环条件中使用hashNext()方法判断集合中是否存在下一个元素,如果存在,则调用next()方法将元素取出,否则说明已到达了集合末尾,停止遍历元素

import java.util.*;
public class Example02 {

            public static void main(String[] args) { 
            List list = new ArrayList();
            list.add("abc1");
            list.add("abc2");
            list.add("abc3"); 
            list.add("abc4");
            Iterator it = list.iterator();
            while (it.hasNext()) {
             Object obj = it.next();
            System.out.println(obj);
            }
        }
    }

3、去除集合中的重复元素。

(1)编写一个类,类中有二个方法,一个能够去除给定ArrayList中的重复元素,并得到新的ArrayList;一个能够输出集合,使得在运行过程中能观察到集合中元素的变化。

(2)编写一个主类,测试上述类的功能,并给出测试结果。

import java.util.ArrayList;
import java.util.HashSet;
 
public class RemoveByHashSet {
    public static void main(String[] args){
        ArrayList l=new ArrayList();
        l.add("java");
        l.add("php");
        l.add("C");
        l.add("java");
        l.add("C");
        System.out.println(l);
        HashSet s=new HashSet(l);
        ArrayList al=new ArrayList(s);
        System.out.println(al);
    }
}

HashMap的使用,请用泛型的写法。

已知某学校的教学课程内容安排如下:

完成下列要求:

(1) 使用一个Map,以老师的名字作为键,以老师教授的课程名作为值,表示上述课程安排。

(2) 增加了一位新老师Allen 教JDBC

(3) Lucy 改为教CoreJava

(4) 用两种方式遍历Map,输出所有的老师及老师教授的课程

(5) 利用Map,输出所有教JSP 的老师。

import java.util.*;
public class CourseMap {
    public static void main(String[] args) {

        Map map = new HashMap();

        map.put("Tom","CoreJava");
        map.put("John","Oracle");
        map.put("Susan","Oracle");
        map.put("Jerry","JDBC");
        map.put("Jim","Unix");
        map.put("Kevin","JSP");
        map.put("Lucy","JSP");

        System.out.println("Map修改前遍历:");
        Set keySet = map.keySet();
        for(String key : keySet){
            System.out.println(key+"\t"+map.get(key));
        }
        map.put("Allen","JDBC");

        map.put("Lucy","CoreJava");

        System.out.println("Map修改后遍历:");
        Iterator iterator = keySet.iterator();
        while (iterator.hasNext()) {
            String key = (String) iterator.next();
            System.out.println(key+"\t"+map.get(key));
        }

        System.out.println("教授JSP的老师姓名:");
        for(String key : keySet){
            if(map.get(key).equals("JSP")){
                System.out.println(key);
            }
        }

    }
}