对java泛型集合的理解

来源:互联网 发布:无主之地2mac版 编辑:程序博客网 时间:2024/05/21 07:53

 

为什么需要泛型?

  任何对象在加入集合类后,自动转为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集合存放数据: MapkeyString 类型的编号 Map键为Student对象

Mapkey可以自定以字符串 如 000100020003,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);

}

}