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) { Listlist = 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) { Listlist = 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){ ArrayListl=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) { Mapmap = 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); } } } }