泛型


文章目录

  • 泛型
  • 1、认识泛型
  • 2、泛型在集合中的应用
  • 1)使用LinkedList的泛型:
  • 2)使用HashMap的泛型


1、认识泛型

泛型是JDK 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数,使代码可以应用于多种类型,简单来说,java语言引入泛型的好处是安全简单,且所有强制转换都是自动和隐式进行的,提高了代码的重用率。

泛型的定义语法格式如下:类1或者接口<类型实参> 对象=new 类2<类型实参>();

例如:ArrayLIst list=new ArrayList();

上述代码表示创建一个AarryList集合,但规定该集合中存储的元素类型必须为String类型。

2、泛型在集合中的应用

List和ArrayList的泛型形式时List 和ArrayList ,ArrayList的常用方法和ArrayList类基本一样,

LinkedList的常用方法和LinkedList类基本一样。

1)使用LinkedList的泛型:

package ArrayLIst;


import java.util.LinkedList;

public class NewTitle2 {
    int id;
    String name;
    String creator;

    public NewTitle2() {
    }

    public NewTitle2(int id, String name, String creator) {
        this.id = id;
        this.name = name;
        this.creator = creator;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCreator() {
        return creator;
    }

    public void setCreator(String creator) {
        this.creator = creator;
    }

    public static void main(String[] args) {
        NewTitle2 car = new NewTitle2(1, "汽车", "管理员");
        NewTitle2 medical = new NewTitle2(2, "医学", "管理员");
        NewTitle2 fun = new NewTitle2(3, "娱乐", "管理员");
        NewTitle2 gym = new NewTitle2(4, "体育", "管理员");

        LinkedList<NewTitle2> newsTileList = new LinkedList<NewTitle2>();


        newsTileList.add(car);
        newsTileList.add(medical);

        newsTileList.addFirst(fun);//void addFirst(Object obj) 将指定元素插入到当前集合的首部
        newsTileList.addLast(gym);//void addLast(Object obj) 将指定元素插入到当前集合的尾部
        System.out.println("头条和末条新闻已添加");

        //获取头条以及末条新闻标题
        NewTitle2 first = newsTileList.getFirst();//Object getFirst() 获得当前集合的第一个元素
        System.out.println("头条新闻的标题为:"+first.getName());
        NewTitle2 last = newsTileList.getLast();//Object getLast() 获取当前集合的最后一个元素
        System.out.println("末条新闻的标题为:"+last.getName());

        //删除头条和末条新闻标题
        newsTileList.removeFirst();//Object removeFirst() 移除并返回点前集合的第一个元素
        newsTileList.removeLast();//Object removeLast() 移除并返回当前的最后一个元素
        System.out.println("头条和末条新闻标题已移除");

        System.out.println("遍历所有的新闻标题");
        for (NewTitle2 title2:newsTileList){
            System.out.println("新闻标题名称:"+title2.getName());
        }

    }



}

2)使用HashMap的泛型

package HashMap;

import java.util.HashMap;

public class Student {
    String name;
    String sex;

    public Student() {
    }

    public Student(String name, String sex) {
        this.name = name;
        this.sex = sex;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public static void main(String[] args) {
        Student student1 = new Student("黎明", "男");//创建保存“键值对”的集合对象
        Student student2 = new Student("琉璃", "女");

        HashMap<String,Student> students = new HashMap<String, Student>();

        students.put("jack",student1);
        students.put("Rose",student2);
        System.out.println("已添加"+students.size()+"个学生信息");

        System.out.println("键集:"+students.keySet());//输出键集

        //判断是否存在jack这个键,如果存在,则根据键获取相应的值
        String key="jack";
        if(students.containsKey(key)){
            Student student =students.get(key);
            System.out.println("英文名"+key+"的学生姓名:"+student.getName());
        }

        System.out.println("输出学生名:");
        for (Object key1:students.keySet()){
            System.out.println(key1.toString());
        }
        //输出学生详细信息
        System.out.println("输出学生详细信息");
        for (Student value:students.values()){
            System.out.println("姓名:"+value.getName()+"性别:"+value.getSex());
        }

    }
}

在学习如何使用泛型之前,还需要了解以下两个重要的概念:

  • 参数化类型:参数化类型包含一个类的接口,以及实际的类型参数列表。
  • 类型变量:是一种非限定性标识符,用来指定类、接口或者方法的类型。