泛型的使用

泛型的使用

概念

泛型是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 @   Oh,mydream!  阅读(33)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示