• 【Java】集合框架和泛型(三)


    分享第九条励志语录

    没有十全十美的东西,没有十全十美的人,关键是清楚到底想要什么。得到想要的,肯定会失去另外一部分。如果什么都想要,只会什么都得不到。

    目录

    分享第九条励志语录

    泛      型 

    认识泛型

    1、 泛型的定义

    2、 泛型在集合中的应用

     深入泛型

    1、 定义泛型类、泛型接口和泛型方法

    1)泛型类

    2)泛型接口

    3)泛型方法

    2、 多个参数的泛型类

    3、 从泛型类派生子类

    集合框架和泛型总结 


     

     

    泛      型 

     

    认识泛型

    (1)泛型是JDK1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数,使代码可以应用于多种类型。

    (2)Java语言引入泛型的好处是安全简单,且所有强制转换都是自动和隐式进行的,提高了代码的重用率。


    1、 泛型的定义

    (1)将对象的类型作为参数,指定到其他类或者方法上,从而保证类型转换的安全性和稳定性。这就是泛型。泛型的本质就是参数化类型。

    (2)泛型的定义语法格式如下:

    类1或者接口<类型实参> 对象 = new 类2<类型实参>();

    注意:

    -->“类2”可以是“类1”本身,可以是“类1”的子类,还可以是接口的实现类。

    -->“类2”的类型实参必须和“类1”中的类型实参相同。

    (3)例如:ArrayList list = new ArrayList();

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


    2、 泛型在集合中的应用

     

    (1)JDK1.5中已经改写了集合框架中的所有接口和类,增加了对泛型的支持,也就是泛型集合。

    (2)使用泛型集合在创建集合对象时指定集合中元素的类型,从集合中取出元素时无需进行强制类型转换,并且如果把非指定类型对象放入到集合中,会出现编译错误。

    (3)List和ArrayList的泛型形式是List和ArrayList,ArrayList与ArrayList类的常用方法基本一样。

    (4)Map与HashMap也有它们的泛型形式,即Map和HashMap,因为它们的每一个元素都包含两个部分,及key和value,所以,在应用泛型时,要同时指定key的类型和value的类型,K表示key的类型,V表示value的类型。HashMap操作数据的方法与HashMap基本一样。

    (5)泛型使集合的使用更方便,也提升了安全:

    -->存储数据时进行严格类型检查,确保只有合适类型的对象才能存储在集合中。

    -->从集合中检索对象时,减少了强制类型转换。


     深入泛型

    (1)在集合中使用泛型只是泛型多种应用的一种,在接口、类、方法等方面也有着泛型的广泛应用。

    (2)泛型的本质就是参数化类型,参数化类型的重要性在于允许创建一些类、接口和方法,其操作的数据类型被定义为参数,可以在真正使用时指定具体的类型。

    参数化类型:参数化类型包含一个类或者接口,以及实际的类型参数列表。

    类型变量:是一种非限定性标识符,用来指定接口或者方法的类型。


    1、 定义泛型类、泛型接口和泛型方法

     

    (1)对于一些常常处理不同类型数据转换的接口或者类,可以使用泛型定义,如Java中的List接口。

    (2)定义泛型接口或类的过程,与定义一个接口或者类相似。

    1)泛型类

    概念:泛型类简单地说就是具有一个或者多个类型参数的类。

    语法:
                                        访问修饰符 class className

        TypeList表示类型参数列表,每个类型变量之间以逗号分隔。

    举例:
                                        public class GenericClass{······}

    创建泛型类实例:
                                        new className(argList);

        TypeList表示定义的类型参数列表,每个类型变量之间以逗号分隔。

        argList表示实际传递的类型参数列表,每个类型变量之间同样以逗号分隔。

    举例:
                                        new GenericClass("this is String Object");

    2)泛型接口

    概念:泛型接口就是拥有一个或者多个类型参数的接口。泛型接口的定义方式与定义泛型类类似。

    语法:
                                        访问修饰符 interface interfaceName

        TypeList表示由逗号分隔的一个或多个类型参数列表。

    举例:
                                        public interface TestInterface{

    public T print(T t);

        }

    泛型类实现泛型接口:
                                        访问修饰符 class className implements interfaceName

    3)泛型方法

    概述:

    一些方法常常需要对某一类型数据进行处理,若处理的数据乐行不确定,则可以通过泛型方法的方式来定义,达到简化代码、提高代码重用性的目的。

    泛型方法实际上就是带有类型参数的方法。

    定义泛型方法与方法所在的类、或者接口是否是泛型类或者泛型接口没有直接的关系,也就是说无论是泛型类还是非泛型类,如果需要就可以定义泛型方法。

    语法:
                                    访问修饰符 <类型参数> 返回值 方法名(类型参数列表)

    注意:
                                    类型变量放置在访问修饰符与返回值之间。

    举例:
                                    public void showName(String s){}


    2、 多个参数的泛型类

    (1)泛型类的类型参数可以有一个或者多个。

    (2)比如HashMap就有两个类型参数,一个指定key的类型,一个指定value的类型。


    3、 从泛型类派生子类

    (1)面向对象的特征同样适用于泛型类,所以泛型类也可以继承。

    (2)继承了反省类的子类,必须也是泛型类。

    (3)继承泛型类的语法格式:class 子类 extends 父类{}

    集合框架和泛型总结

     

    1、 集合弥补了数组的缺陷,它比数组更灵活实用,而且不同的集合适用于不同场合。
     

    2、 Java集合框架共有3大类接口,即Map接口、List接口和Set接口。
     

    3、 ArrayList和数组采用相同的存储方式,它的特点是长度可变且可以存储任何类型的数据,它的优点在于遍历元素和随机访问元素的效率较高。
     

    4、 LinkedList类采用链表存储方式,优点在于插入、删除元素时效率较高。
     

    5、 Iterator为集合而生,专门实现集合的遍历,它隐藏了各种集合实现类的内部细节,提供了遍历集合的统一编程接口。
     

    6、 HashMap类是最常用的Map实现类,它的特点是存储键值对数据,优点是查询指定元素效率高。
     

    7、 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数,使代码可以应用于多种数据类型。
     

    8、 使用泛型集合在创建集合对象时指定集合中元素的类型,从集合中取出元素时无需进行强制类型转换。
     

    9、 在集合中使用泛型只是泛型多种应用的一种,在接口、类、方法等方面也有着泛型的广泛应用。
     

    10、 如果数据类型不确定,可以通过泛型方法的方式,达到简化代码、提高代码重用性的目的。

     

        今天分享就到这了,谢谢大家支持!!!!

    创作不易点赞评论互关三连

     

     

  • 相关阅读:
    labelme标注的json、coco格式快速转yolo格式
    六,购物⻋与订单
    (附源码)springboot篮球场地预约系统 毕业设计 345655
    6267: 【区赛】【鄞州2022】星期几
    PostwomanApi接口测试工具
    目标跟踪评估绘图(3):ubuntu18.04在MATLAB2016b下的vot-toolkit配置,绘制VOT数据集的EAO评估图,与其他算法进行比较
    虚拟线程最佳实践
    家居服务小程序发展指南
    【搭建yolox深度学习环境】
    使用互相关进行音频对齐
  • 原文地址:https://blog.csdn.net/swy2560666141/article/details/127103949