泛型的使用

泛型的使用

概念

泛型是JDK5.0中的新特性,可以将类型作为参数传递到类中,实现类的重用。
尚硅谷的老师说可以将泛型理解为标签,例如中药的药柜,写的是什么标签。里面就装什么数据,我感觉这个也是一个侧面,泛型类就像是一个容器,如果不贴标签,什么都可以往里面扔,如果贴了标签,就进行了分类,我们处理也很方便。

实践

package com.atguigu.generic;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;

/**
 * 功能描述
 *
 * @since 2022-05-20
 */
public class Demo01 {
    public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<>();
        map.put("xiaoming", 1);
        map.put("xiaoHong", 8);
        map.put("xiaoLi", 5);

        Set<Map.Entry<String, Integer>> entries = map.entrySet();
        Iterator<Map.Entry<String, Integer>> iterator = entries.iterator();
        while (iterator.hasNext()) {
            Map.Entry<String, Integer> next = iterator.next();
            System.out.println(next.getKey() + "========" + next.getValue());
        }

        ArrayList<Integer> arrayList = new ArrayList<>();
        arrayList.add(23);
        arrayList.add(67);
        arrayList.add(34);

        Iterator<Integer> iterator1 = arrayList.iterator();
        while (iterator1.hasNext()) {
            System.out.println(iterator1.next());
        }

        TreeSet<Employee> employees = new TreeSet<>(new Comparator<Employee>() {
            @Override
            public int compare(Employee o1, Employee o2) {
                return o1.getAge() - o2.getAge();
            }
        });

        employees.add(new Employee("xiaoming", 20));
        employees.add(new Employee("xiaoHong", 28));
        employees.add(new Employee("xiaoLi", 27));

        Iterator<Employee> iterator2 = employees.iterator();
        while (iterator2.hasNext()) {
            System.out.println(iterator2.next());
        }


    }
}

class Employee {
    private String name;

    private int age;

    public Employee(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

    @Override
    public String toString() {
        return "Employee{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

总结

  1. 集合接口在jdk5.0都修改为了带泛型的结构
  2. 在实例化集合类的时候,可以指明具体的泛型类型
  3. 指明完之后,在集合类或接口中凡是用到泛型类别的地方,(如属性,方法,接口)都用具体的类型替代
  4. 注意点,泛型的类型必须是引用类型,不能是基本数据类型,想使用基本数据类型,可以用其包装类代替
  5. 如果实例化的时候没有执行泛型的类型,默认是Object类型
posted @ 2022-05-20 21:42  Oh,mydream!  阅读(29)  评论(0编辑  收藏  举报