为什么需要泛型?
任何对象在加入集合类后,自动转为objec类型,取出时要进行强制类型转换,恢复特定的类型,所以在编程中,声明集合要指定里面能够存放什么类型的数据,解决集合的不安全性。
这种情况下需要用泛型集合,泛型集合限定了集合中的元素,解决了集合的不安全性,使用泛型集合时,从集合中取出元素,不需要强制类型转换可直接调用。
List泛型:
声明方式:List< 元素类型 >对象名=new ArrayList<元素类型>( );
LinkedList<元素类型> 对象名=new LinkedList<元素类型>;
Jdk1.5新特性中配合集合,数组循环遍历提供了一个增强的for循环:
for (元素类型 对象名: 集合名){
}
Map泛型:
声明方式:
Map<键数据类型,元素类型> 对象名=new HashMap<键数据类型,元素类型>();
例题:使用Java 集合实现功能 实现集合泛型功能
创建一个Map 集合对象存放Student对象
创建Student对象,Sudent对象 包含 name age pwd sex 4个属性
往Map集合存放数据: Map的key为String 类型的编号 Map键为Student对象
Map的key可以自定以字符串 如 0001,0002,0003,0004…..
使用HashMap作为Map的实现类,循环遍历Map集合数据 输出Map里面存放Student对象的姓名和年龄
public class Student {
/*生命属性*/
private String name;
private int age;
private String sex;
private String pwd;
/*getter,setter方法*/
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
/*构造方法*/
public Student(String name, int age, String sex, String pwd) {
super();
this.name = name;
this.age = age;
this.sex = sex;
this.pwd = pwd;
}
@Override
public String toString() {
return name+age;
}
}
import java.util.HashMap;
import java.util.Map;
import Test06.Student;
public class TestStudent {
/**
* 测试学生类
*/
public static void main(String[] args) {
/*声明对象*/
Student zhangsan=new Student("张三",20,"男","123456");
Student lisi=new Student("李四",21,"男","12356");
Student zhangyun=new Student("章云",19,"女","123567");
Student wanger=new Student("王二",20,"男","wang123567");
/*声明集合*/
Map student=new HashMap();
/*将对象添加到集合中*/
student.put("0001", zhangsan);
student.put("0002", lisi);
student.put("0003", zhangyun);
student.put("0004", wanger);
/*输出集合信息*/
System.out.println(student.keySet());
System.out.println(student.values());
System.out.println(student);
}
}