Java-集合框架和泛型

16 篇文章 0 订阅
订阅专栏

目录

为什么需要泛型

1.泛型概述

泛型的应用

2.泛型类

3.类型通配符

4.泛型方法

类型通配符在泛型中的应用

类型通配符运用在方法上

5.泛型接口

泛型总结


为什么需要泛型

 

1.泛型概述

 参数化类型

就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也就定义成参数类型(也可以称之为参数类型),然后在使用/调用时传入具体的类型(类型参数)

泛型的应用

package Collection;

/**
 * 在类上定义泛型
 * T、E、K、V等方式作为泛型形参
 * Param<T>
 */
public class Text <T>{
    private T date;
    
    public Text(){
        
    }

    /**
     *在构造方法上使用泛型
     * @param date
     */
    public Text(T date){
        this.date=date;
    }

    /**
     * 在方法上使用泛型
     * @return data
     */
    public T getData(){
        return this.date;
    }
    
}
package Collection;

public class GenericText {

    public static void main(String[] args) {
        Text<String> name = new Text<String>("Tom");
        System.out.println("name:" + name.getDate());

        Text<Integer> num = new Text<Integer>(123);
        System.out.println("num:" + num.getDate());

    }
}

2.泛型类

package Collection;

public class GenericText {

    public static void main(String[] args) {
        Text<String> name = new Text<String>("Tom");
        System.out.println("name:" + name.getDate());

        Text<Integer> num = new Text<Integer>(123);
        System.out.println("num:" + num.getDate());

        System.out.println("name class:"+name.getClass());
        System.out.println("num class :" + num.getClass());
        System.out.println("name.getClass() == num.getClass()" + (name.getClass() == num.getClass()));//true

    }
}

检验结果正确之后,会对泛型的信息擦除 ,例如,当我们成功编译之后的class文件,它是不包含任何泛型的信息,在逻辑上泛型可以理解成多个不同的类型,但实际上都是相同的类型

3.类型通配符

在泛型中

类型通配符 ? 上线限制 extends

 类型通配符 ? 下线 super

4.泛型方法

类型通配符在泛型中的应用

package Collection;

public class GenericText {


    /**
     * 类型通配符 ? 上线限制 extends
     * @param data
     */
    public static void getUpperNumberData(Text<? extends  Number> data) {

        System.out.println("data:" + data.getData());
    }

    /**
     * 类型通配符 ? 下线 super
     * @param data
     */
    public static void getLowerNumberData(Text<? super  Number> data) {

        System.out.println("data:" + data.getData());
    }


    public static void main(String[] args) {
        Text<String > name = new Text<String>("Tom");
        Text<Number> num1 = new Text<Number>(123);//Number可以看出是父类泛型
//        System.out.println("name:" + name.getDate());

        Text<Integer> num2 = new Text<Integer>(456);
//        System.out.println("num:" + num.getDate());

        //上线测试
//        getUpperNumberData(name);
//        getUpperNumberData(num1);
//        getUpperNumberData(num2);
//
//        //下线测试
//        getLowerNumberData(name);
//        getLowerNumberData(num1);
//        getLowerNumberData(num2);

//        System.out.println("name class:"+name.getClass());
//        System.out.println("num class :" + num.getClass());
//        System.out.println("name.getClass() == num.getClass()" + (name.getClass() == num.getClass()));

    }

}

类型通配符运用在方法上

    /**
     * 将泛型定义在方法上
     *泛型必须放到返回值的前面 修饰符的后面
     * @param e
     * @param <E>
     */
    public <E> void setData(E e){
        System.out.println(e.toString());
    }
  Text test = new Text();
  test.setData("Jerry");

5.泛型接口

接口:

package Collection.serivce;

public interface Inter<T> {
        public void show(T t);

}

接口实现:

package Collection.serivce.impl;

import Collection.serivce.Inter;

public class Interimpl01 implements Inter<String> {

    public  void show(String str){

        System.out.println("show" + str);
    }
}
package Collection.serivce.impl;

import Collection.serivce.Inter;

public class Interimpl02<W> implements Inter<W> {

    public void show(W q){
        System.out.println("show" + q);
    }
}

类中测试:

        public static void main(String[] args) {
        Interimpl01 impl01 = new Interimpl01();
        impl01.show("abc");
        Interimpl02<Integer> impl02 = new Interimpl02<Integer>();
        impl02.show(5);

        System.out.println("--------------");

泛型总结

 1.泛型提高了程序的安全性

2.将运行期间遇到的问题转移到编译期

3.省去了类型强制转换的麻烦

4.泛型类的出现优化了程序设计

5.在接口、类、方法上都可以使用泛型

6.类型通配符上、下限的定义

<? extends E> 、<? super E>

JAVA集合框架泛型
maisanhzkxha的博客
06-10 1217
1. 使用ArrayList类动态存储数据 ArrayList类的常用方法 boolean add(Object o) 在列表末尾添加元素o,其实位置从0开始。 void add(int index,Object o) 在指定位置添加元素o,索引位置必须介于0和列表中元素个数之间 int size() 列表中的元素个数 Object get(int index)返回列表中的元素个数。 voidset(int index,Object obj)返回指定位置处的元素,取出的元素是Object类型,使用前需.
Java-Java反射与泛型教程
11-13
Java反射与泛型Java编程中的两个重要特性,它们各自为开发者提供了强大的工具来增强代码的灵活性和类型安全性。在本教程中,我们将深入探讨这两个主题,帮助你更好地理解和运用它们。 **Java反射** Java反射机制...
java集合框架泛型
weixin_30764883的博客
05-18 323
---恢复内容开始---    集合:用来存储多个元素 数组和集合区别:   数组的长度是固定的;集合的长度是可变的   数组存储的类型是同一类,可以存储基本数据类型;集合存储的都是对象,对象类型可以不一致 java集合类主要由Map接口和Collection接口派生而来,Collection接口有两个常用的子接口,List接口和Set接口,所以通常说java集合框架由三...
JAVA高级编程之集合框架泛型(超详细)
最新发布
sksnbdkdisbsnskd的博客
08-27 1117
Java集合框架提供了一套性能优良、使用方便的接口和类,它们位于java.util包中。
Java集合框架泛型机制
liumei90
10-18 4787
1、 2、泛型 应用背景:存入容器的对象在取出时需要强制转换类型,因为对象加入容器时都被转化为Object类型,而取出时又要转成实际类型。 在Java中向下类型转换时容易出现ClassCastException的异常,这时应当尽量避免。有什么办法可以让装入容器中的数据保存自己的类型而不被转化为Object对象呢,这就需要用到JDK5.0支持的新功能——Java泛型。 定义:泛型
Java集合框架泛型
lhjava1234的博客
08-06 231
数据添加到HashMap集合后,所有数据的数据类型将转换为Object类型,所以从其中获取数据。泛型的本质是参数化类型:将所操作的数据类型指定为一个参数,使代码可以应用于多种类型。泛型的定义:将对象的类型作为参数,指定到其他类或者方法上,从而保证类型转换的安全性和。实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高。接口继承Collection接口,存储一组不唯一,有序。所有强制转换都是自动和隐式进行的,安全简单。接口存储一组唯一,无序的对象。接口存储一组不唯一,无序的对象。.
29-API-集合框架-泛型-使用_java_
09-29
Java集合框架中,泛型的应用尤其广泛。集合框架Java中用于存储和操作对象的核心组件,包括List、Set和Map等接口以及它们的实现类。在未引入泛型之前,集合中的元素都是Object类型,这导致了频繁的强制类型转换,...
Java-Generics-and-Collections-Example:Java泛型和集合的示例
05-02
2. **Java集合框架**: - 集合框架Java提供的一组接口和类,用于存储和操作一组对象。主要接口包括List、Set、Queue等,实现这些接口的类有ArrayList、LinkedList、HashSet、HashMap等。 - List接口是有序的集合...
Java软件开发实战 Java基础与案例开发详解 11-1 Java集合框架泛型机制 共6页.pdf
07-07
### Java集合框架泛型机制 #### 11.1 Java集合框架概述 在Java中,集合框架(Collection Framework)是一套用于存储和操作对象集合的API。它为程序员提供了丰富的数据结构,使得数据管理更加高效和灵活。集合...
Java笔记篇(Map)
qq_58849698的博客
07-07 176
一、Map * collection和Map的区别? * collection每次存储一个元素,Set集合是不可重复,List集合是可重复。 * Map集合每次存储两个元素,键不可重复,值可重复。 * Map接口中的方法: * 添加功能: * V put(K key, V value):当键第一次存储返回null,接下来每一次存储返回上一次的值。 * 删除功能: * void clear() * V...
Java集合框架泛型
10-11
集合框架泛型的介绍和基础理解,方便大家了解集合框架泛型
java 集合与泛型_java 集合框架泛型(简单理解)
weixin_33433067的博客
02-12 186
集合的储存方式是objict对象存入,取出。存入的的时候自动转化,但是取出的时候一定要强制转换回原来存入的类型。如果你不想强制转化输出,你就需要泛型了—<>来限制你的输入了,算是从源头把控。这个词也不知道是谁翻译的,太渣了,所谓的泛型还不如翻译成限型—限制类型。限制类型更加明确而且好理解,也就是说你每次存储创建的数据在开始的时候就进行数据类型限制。输出的时候必然是这种类型。其实也就是参...
java集合框架泛型
Grace_1203的博客
06-14 453
https://www.cnblogs.com/xiaoshitoutest/p/6963798.html 集合框架Java中的集合框架大类可分为Collection和Map;两者的区别: 1、Collection是单列集合;Map是双列集合 2、Collection中只有Set系列要求元素唯一;Map中键需要唯一,值可以重复 3、Collection的数据结构是针对元素的;M...
java 集合框架泛型
chen449757520的博客
09-06 528
//常用的集合类: Set(集):集合中的对象不按特定的方式排序,不允许元素重复 List(列表):集合中的对象按照索引位置排序,允许元素重复 Map(映射):集合中每一个元素都包含一对key和value对象,不允许key对象重复,值对象可以重复     Colllection集合的使用         //1.创建一个线性列表的集合         Collection co
Java集合框架泛型(一)
swy2560666141的博客
09-26 1068
(1)Set接口是Collection接口的另外一个常用子接口,Set接口描述的是一种比较简单的集合。(2)集合中的对象并不按特定的方式排序,并且不能保存重复的对象,也就是说Set接口可以存储一组唯一、无序的对象。(3)Set接口常用的实现类有HashSet。
Java程序开发泛型集合框架
YCF8746的博客
02-24 349
(学习参考书:Java2实用教程第5版) 一、泛型 泛型的主要目的是可以建立具有类型安全的集合框架,如链表、散列映射等数据结构。实现常见数据结构的类通称为Java集合框架。 (1)泛型类声明 可以使用“ class 名称<泛型列表> ”声明一个和普通的类有所区别的类,这样的声明的类称作泛型类。泛型列表给出的泛型(对象或接口)可以作为类的成员变量的类型、方法的类型以及局部变量的类型。 (2)使用泛型类声明对象 和普通的类相比,泛型类声明和创建对象时,类名后多了一对“<>”,而且必须要使
Java集合框架泛型
weixin_43240648的博客
02-15 198
泛型 其本质是参数化类型,把类型作为参数传递 常见形式有泛型类、泛型接口、泛型方法 <E,…> E称为类型占位符,表示一种引用类型 好处: 提高代码的重用性 防止类型转换异常,提高代码的安全性 不能实例化 泛型只能使用引用类型 不同泛型类型对象之间不能相互赋值 泛型类 public class Demo10<T> { //使用泛型 //创建变量 T t; //作为方法的参数 public void show(T t){
java----集合框架泛型
fighting
07-21 233
泛型 作用:类型参数化,将类型进行参数传递达到动态确定类型的目的 实现方法: 泛型接口:public interface 接口名 { } 泛型方法:public 返回值类型 方法名(E e){ } 集合框架 集合定义:一个解决数组固定长度缺陷的动态容器。集合中只能存放对象。 集合框架图 Collection:单值保存根接口 分类:按照重复有序,或者不重复无序分成两个接口:Li...
写文章

热门文章

  • 从零开始搭建仿抖音短视频APP-构建后端项目 12500
  • Springboot三层架构--DAO层、Service层、Colltroler层--这波我在外太空 10332
  • 从零开始搭建仿抖音短视频App--项目介绍和架构设计演示 5151
  • Java后端实现批量删除 4081
  • 什么是耦合、解耦 3794

分类专栏

  • 数据结构和算法 3篇
  • 仿抖音APP项目 24篇
  • 吊打面试官系列 4篇
  • 计算机网络面试核心 1篇
  • 微信小程序-家教信息服务平台 4篇
  • 力扣刷题 1篇
  • Springboot快速入门项目 3篇
  • 报错专栏
  • 计算组织与架构 6篇
  • 数据库 8篇
  • Java 16篇
  • C语言 1篇
  • MySQL-读书笔记 2篇
  • JavaScript 13篇
  • CSS 17篇

最新评论

  • 从零开始搭建仿抖音短视频APP-构建后端项目

    一席嗔梦: 你好,这个视频能出吗?

  • 从零开始搭建仿抖音短视频APP-后端开发评论业务模块(2)

    一席嗔梦: 你好,这个课能出么表情包

  • 从零开始搭建仿抖音短视频APP-后端开发短视频业务模块(3)

    旅行ottffsse: 大佬,您好。我的前端传来的vlogId是空的,因为原本的视频链接失效了,我就把vlog表中我的视频vloger改成别人ID,首页能展示,但是这个detail方法前端传来的vlogId是空的,请问您知道吗

  • 网页制作流程--(项目案例)学成在线

    2401_83712771: 你好这个用的什么软件

  • 从零开始搭建仿抖音短视频APP-开发评论业务模块(1)

    坚硬的锄头: 评论前端页面如何做的呀,求告知

最新文章

  • 数据结构和算法-计数排序
  • 数据结构与算法-希尔排序、归并排序
  • 数据结构和算法--算法与数据结构的概述、简单排序
2023年3篇
2022年102篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

什么时候养猫猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家建邺商场国庆美陈商场美陈动物玉泉玻璃钢园林雕塑春季商场美陈效果图蚂蚁玻璃钢卡通雕塑定制厂家通道商场美陈哪里买周口附近不锈钢玻璃钢彩绘雕塑玻璃钢机器人雕塑价格广东卡通玻璃钢雕塑工厂玻璃钢面包雕塑主题商场美陈销售公司台州玻璃钢陶瓷雕塑厂家天门玻璃钢雕塑熊猫厂家益阳佛像玻璃钢雕塑徐州玻璃钢雕塑制作厂家黑龙江大型玻璃钢雕塑制作江都玻璃钢卡通雕塑宣城佛像玻璃钢雕塑河北树脂玻璃钢雕塑厂家广东周年庆典商场美陈售价浙江玻璃钢雕塑招聘临时工三亚玻璃钢雕塑价格表黄冈公园玻璃钢雕塑公司长乐城市玻璃钢雕塑玻璃钢雕塑哪里最好人物玻璃钢雕塑加工厂琼海玻璃钢门头雕塑玻璃钢雕塑我们制造美人鱼玻璃钢雕塑服务好有诚信的玻璃钢雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化