JAVA泛型使用练习2(自定义泛型使用)

自己想了个类似的题目接着写代码,写到熟练为止

DAO泛型,操作Student和Worker集合,当然也可以应用到更多的对象

然后对集合进行操作

package test10;

import java.util.HashMap;
import java.util.Map;

public class TestDAO {
	public static void main(String[] args) {
		//对泛型类DAO进行操作, 创建Student 泛型对象
		DAO<Student> dao = new DAO<Student>();
		//创建Student map集合
		Map<Integer, Student> map = new HashMap<Integer,Student>();
		dao.setMap(map);
		//对泛型类DAO进行操作, 创建Woker泛型对象
		DAO<Worker> dao1 = new DAO<Worker>();
		Map<Integer, Worker> map2 = new HashMap<Integer,Worker>();
		dao1.setMap(map2);
		//对Student Map操作
		dao.getMap().put(1, new Student("RayLu", 23, "大学一年级"));
		dao.getMap().put(5, new Student("Tom", 32, "大学四年级"));
		dao.getMap().put(3, new Student("Bleach", 24, "大学二年级"));
		dao.getMap().put(4, new Student("Bruce", 25, "大学二年级"));
		//遍历StudentMap
		for(Integer i: dao.getKey()){
			System.out.println(i+"==="+dao.getValue(i));
		}
		//增加学生
		dao.add(8, new Student("Jason",23,"大学三年级"));
		//删除学生
		dao.delete(3);
		//修改学生
		dao.modify(5, new Student("Tom", 32, "大学已毕业"));
		//查询学生
		System.out.println(dao.getValue(5));
		//遍历学生
		for(Integer i: dao.getKey()){
			System.out.println(i+"==="+dao.getValue(i));
		}
		//对Worker操作和Student操作方法同样。。
	}
}
DAO类

package test10;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;

public class DAO<T> {
//	private int id;
	//声明Map变量,其中Key为Integer类型,T为可变类型
	Map<Integer, T> map;
//获取Map对象
	public Map<Integer, T> getMap(){
		return map;
	}
	//建立Map对象
	public void setMap(Map<Integer, T> map){
		this.map = map;
	}
	//操作Map对象,添加元素
	public void add(int index, T value){
		map.put(index, value);
	}
	//操作Map对象,删除元素
	public void delete(int index){
		map.remove(index);
	}
	//修改Map制定key的元素
	public void modify(int index, T value){
		map.put(index, value);
	}
	//查询Map中的元素
	public T getValue(int index){
		return map.get(index);
	}
	//获取Map中所有Key
	public Set<Integer> getKey(){
		Set<Integer> set = new TreeSet<Integer>();
		for(Integer in:map.keySet()){
			set.add(in);
		}
		return set;
	}
	
	//获取Map中所有Value
	public List<T> getValue(){
		List<T> list = new ArrayList<T>();
		for(T t: map.values()){
			list.add(t);
		}
		return list;
	}
	
}
Student类

package test10;

public class Student extends Person{
	private String grade;

	public String getGrade() {
		return grade;
	}

	public void setGrade(String grade) {
		this.grade = grade;
	}

	@Override
	public String toString() {
		return "Student [grade=" + grade + ", getName()=" + getName() + ", getAge()=" + getAge() + "]";
	}

	public Student(String name, int age, String grade) {
		super(name, age);
		this.grade = grade;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = super.hashCode();
		result = prime * result + ((grade == null) ? 0 : grade.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (!super.equals(obj))
			return false;
		if (getClass() != obj.getClass())
			return false;
		Student other = (Student) obj;
		if (grade == null) {
			if (other.grade != null)
				return false;
		} else if (!grade.equals(other.grade))
			return false;
		return true;
	}
}
Worker类

package test10;

public class Worker extends Person{
private int salary;

public int getSalary() {
	return salary;
}

public void setSalary(int salary) {
	this.salary = salary;
}

@Override
public String toString() {
	return "Worker [salary=" + salary + ", getName()=" + getName() + ", getAge()=" + getAge() + "]";
}

public Worker(String name, int age, int salary) {
	super(name, age);
	this.salary = salary;
}

@Override
public int hashCode() {
	final int prime = 31;
	int result = super.hashCode();
	result = prime * result + salary;
	return result;
}

@Override
public boolean equals(Object obj) {
	if (this == obj)
		return true;
	if (!super.equals(obj))
		return false;
	if (getClass() != obj.getClass())
		return false;
	Worker other = (Worker) obj;
	if (salary != other.salary)
		return false;
	return true;
}

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值