首页 > 编程语言 >Java中集合泛型的学习

Java中集合泛型的学习

时间:2024-09-25 19:34:27浏览次数:6  
标签:Java value 集合 类型 泛型 public

集合遍历


目录

Java集合泛型是Java SE 1.5(Java 5)中引入的一个重要特性,它允许在定义类、接口和方法时指定一个或多个类型参数。这些类型参数在实例化或调用时会被具体的类型所替换,从而提供类型安全并减少类型转换的需要。以下是对Java集合泛型的详细解释:

泛型的基本概念

  • 定义:泛型(Generics)是参数化类型的一种应用,它将类型参数化,使得代码可以应用于多种类型。
  • 目的:提高代码的重用性、安全性和可读性,减少类型转换的错误。

泛型的好处

  1. 类型安全:在编译时期即可检查类型错误,避免运行时出现ClassCastException
  2. 消除强制类型转换:在使用泛型后,可以在编译时期自动进行类型转换,无需手动进行。
  3. 提高代码复用性:通过类型参数化,可以编写更加通用的代码,适应不同的数据类型。

泛型的使用

1. 泛型类

在类名后添加一对尖括号,并在尖括号中填写类型参数。例如:

public class GenericClass<T> {
    private T value;

    public GenericClass(T value) {
        this.value = value;
    }

    public T getValue() {
        return value;
    }

    public void setValue(T value) {
        this.value = value;
    }
}

2. 泛型接口

泛型接口的定义与泛型类类似,也是在接口名后添加类型参数。例如:

public interface GenericInterface<T> {
    void show(T value);
}

3. 泛型方法

泛型方法可以定义在泛型类或普通类中。在方法返回类型前添加尖括号和类型参数。例如:

public class GenericMethods {
    public static <T> void printArray(T[] inputArray) {
        for (T element : inputArray) {
            System.out.printf("%s ", element);
        }
        System.out.println();
    }
}

Java集合框架中的泛型

Java集合框架(Java Collections Framework)提供了丰富的接口和类来实现对数据的存储和操作。在Java 5之后,这些接口和类都支持泛型,使得它们可以存储和操作特定类型的对象。

  • List:一个有序集合,允许元素重复。主要实现类有ArrayListLinkedList
  • Set:一个无序集合,不允许元素重复。主要实现类有HashSetLinkedHashSetTreeSet
  • Map:一个将键映射到值的对象,一个键可以映射到最多一个值。主要实现类有HashMapTreeMapLinkedHashMap

使用泛型集合可以确保集合中元素的类型安全,例如:

List<String> stringList = new ArrayList<>();
stringList.add("Hello");
// stringList.add(123); // 编译错误,因为集合类型已指定为String

Set<Integer> integerSet = new HashSet<>();
integerSet.add(1);
// integerSet.add("Hello"); // 编译错误,因为集合类型已指定为Integer

泛型通配符

在Java中,还可以使用泛型通配符(Wildcard)来表示未知的类型。主要有两种形式:

  • ?:表示未知的类型,只能用于读取数据,不能用于写入数据。
  • ? extends T:表示未知的类型,但它是T或T的子类。只能用于读取数据,不能用于写入数据。
  • ? super T:表示未知的类型,但它是T或T的父类。可以用于写入数据,但读取的数据类型只能是T或T的父类类型。

标签:Java,value,集合,类型,泛型,public
From: https://www.cnblogs.com/BingBing-8888/p/18432025

相关文章

  • Java毕业设计-基于SSM框架的校园失物招领平台系统项目实战(附源码+论文)
    大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。......
  • Java毕业设计-基于SSM框架的网上奶茶店系统项目实战(附源码+论文)
    大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。......
  • Java中CountDownLatch和CyclicBarrier的区别与详解
    Java中CountDownLatch和CyclicBarrier的区别与详解一.CountDownLatch和CyclicBarrier的区别CountDownLatch的计数器是大于或等于线程数的,而CyclicBarrier是一定等于线程数CountDownLatch放行由其他线程控制而CyclicBarrier是由本身来控制的二.详解CountDownLatch说明:一......
  • javascript向数组添加元素
    javascript向数组添加元素,比较常用的是两种方法,一种是向数组后面添加元素,一种是在数组前面添加元素。向数组后面添加元素,一般用push语句,它返回的是添加新元素之后的数组长度。push语法格式是数组名.push('要添加的数组元素')比如有一个数组名字叫arr,要向数组后面添加一个'g......
  • unity调用java静态方法
    在Unity中调用Java静态方法通常需要通过Android插件实现。以下是基本步骤:创建Java类:在AndroidStudio中创建一个Java类,包含静态方法。packagecom.example.myplugin;publicclassMyJavaClass{publicstaticStringmyStaticMethod(){return"Hello......
  • JAVA Response 返回值再拿
    在Java中,处理HTTP响应的返回值通常涉及使用库如HttpURLConnection或更现代的库如HttpClient。以下是一个基本的示例,展示了如何发送请求并处理响应:使用 HttpURLConnectionimportjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.net.HttpURLConnection;im......
  • java中abstract关键字的使用案例
    创建动物父类跟狗猫子类abstractclassAnimal1{//抽象类Stringname;intage;Stringvariety;publicAnimal1(){}publicAnimal1(Stringname,intage,Stringvariety){//有参构造this.age=age;this.name=name;......
  • Java day 05
    Javaday05面向对象1.面向对象与面向过程的区别面向过程的思想:代表语言c语言功能开发的每一步都是自己参与的面向对象的思想:代表语言Java语言指的是不断地创建对象,指挥对象事情过程举例现实生活的例子喝水:面向过程的思想:自己拿起水杯,自己走到饮水机前,自己接水面向......
  • Java的详细学习路线
    大家好!我是故里dd,今天给大家说说Java的学习路线!Java的详细学习路线可以分为多个阶段,每个阶段都涵盖了不同的核心知识点和技能。以下是一个较为全面的Java学习路线,供您参考:第一阶段:Java核心基础阶段1.Java基础语法:  -了解Java的基本语法,如数据类型、变量、运算符、控制......
  • java-重启异常断掉的线程和监控线程状态
    java-重启异常断掉的线程和监控线程状态背景主要代码打印结果总结背景有一个线程,可能会因为异常而终止掉。为了监控这个线程,我又启动一个线程去监控。主要代码代码主要是由两个线程和两个可以产生异常的方法,内容跟简单,如下importjava.time.LocalDateTime;impor......