6.2 泛型及高阶应用

news2024/9/23 17:14:53

6.2 泛型及高阶应用

  • 1. 初识泛型的应用
  • 2. 自定义泛型及其应用
    • 1. 自定义泛型
    • 2. 泛型方法的应用
  • 3. 泛型通配符

在这里插入图片描述

1. 初识泛型的应用

在这里插入图片描述
在这里插入图片描述

package com.imooc.pt;

import java.util.ArrayList;

public class ListSample {
    /**
     * 不使用泛型
     */
    public void sample1(){
        //ArrayList不使用泛型,不知道bookList的类型
        ArrayList bookList = new ArrayList();
        bookList.add("三国演义");
        bookList.add("水浒传");
        bookList.add(3.1415926f);
        Object o1 = bookList.get(0);
        String bookName1 = (String)o1;
        System.out.println(bookName1.substring(0,1));
        Object o2 = bookList.get(2);
        String bookName2 = (String)o2;//o2不是字符串
        System.out.println(bookName2.substring(0,1));//出错
    }

    /**
     * 使用泛型
     */
    public void sample2(){
        //使用泛型限制bookList只能接受字符串类型的数据
        ArrayList<String> bookList = new ArrayList();
        bookList.add("三国演义");
        bookList.add("水浒传");
        //bookList.add(3.1415926f);
        String bookName1 = bookList.get(0);
        System.out.println(bookName1.substring(0,1));
        Object o2 = bookList.get(2);
        String bookName2 = (String)o2;
        System.out.println(bookName2.substring(0,1));
    }

    public static void main(String[] args) {
        ListSample listSample = new ListSample();
        listSample.sample1();

    }
}

2. 自定义泛型及其应用

1. 自定义泛型

在这里插入图片描述
在这里插入图片描述

package com.imooc.pt;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 * 自定义泛型
 * @param <E>   
 */
public class CollectionUtils<E> {
    private List<E> data = new ArrayList();

    /**
     * 添加元素
     * @param element
     */
    public void add(E element){
        data.add(element);
    }

    /**
     * 随机获取List中的元素
     * @return
     */
    public E randomSelect(){
        int idx = new Random().nextInt(data.size());
        E ret = data.get(idx);
        return ret;
    }

    /**
     * 测试
     * @param args
     */
    public static void main(String[] args) {
        CollectionUtils<String> utils = new CollectionUtils();
        utils.add("张三");
        utils.add("李四");
        utils.add("王五");
        utils.add("赵六");
        String name = utils.randomSelect();
        System.out.println(name);
        System.out.println(utils.randomSelect());
        System.out.println(utils.randomSelect());
        System.out.println(utils.randomSelect());
        System.out.println(utils.randomSelect());
        System.out.println(utils.randomSelect());
        System.out.println(utils.randomSelect());
    }
}

2. 泛型方法的应用

3. 泛型通配符

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1335386.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL——表的内外连接

目录 一.内连接 二.外连接 1.左外连接 2.右外连接 一.内连接 表的连接分为内连和外连 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选&#xff0c;我们前面学习的查询都是内连接&#xff0c;也是在开发过程中使用的最多的连接查询。 语法&#xff1a; s…

[Linux]——彻底学通权限

学习权限 一、权限概念二、权限管理2.1文件访问者分类&#xff08;人&#xff09;2.2文件类型和访问权限&#xff08;事物的属性&#xff09;2.3 文件访问权限的相关设置方法 三、目录的权限3.1、进入目录的权限3.2、粘滞位 四、关于权限的总结 一、权限概念 Linux下有两种用户…

验证码服务使用指南

验证码服务使用指南 1 部署验证码服务 1.1 基础环境 Java 1.8 Maven3.3.9 1.2 安装Redis 参考“Redis安装指南” 1.3 部署验证码服务 1.3.1 下载源码 使用git从远程下载验证码服务代码(开源)。 1.3.2 使用idea打开项目 使用idea打开上一步下载的sailing目录&#xf…

Java并发(二十一)----wait notify介绍

1、小故事 - 为什么需要 wait 由于条件不满足&#xff08;没烟干不了活啊&#xff0c;等小M把烟送过来&#xff09;&#xff0c;小南不能继续进行计算 但小南如果一直占用着锁&#xff0c;其它人就得一直阻塞&#xff0c;效率太低 于是老王单开了一间休息室&#xff08;调…

1161转进制(C语言)

一&#xff1a;题目 二&#xff1a;思路分析 1.首先该题目让我们使用递归求十进制转其他进制 2.其次&#xff0c;我们要知道十进制转换为其他进制怎么转换&#xff0c;以例题所给的数据为例 由此图可以看出&#xff0c;十进制转换为其他进制&#xff0c;是辗转相除法&#xf…

Linux构建NFS远程共享存储和ftp配置

NFS架构 NFS介绍 文件系统级别共享&#xff08;是NAS存储&#xff09; --------- 已经做好了格式化&#xff0c;可以直接用。 速度慢比如&#xff1a;nfs&#xff0c;samba NFS&#xff1a;Network File System 网络文件系统&#xff0c;NFS 和其他文件系统一样,是在 Linux …

node封装一个图片拼接插件

说在前面 平时我们拼接图片的时候一般都要通过ps或者其他图片处理工具来进行处理合成&#xff0c;这次有个需求就需要进行图片拼接&#xff0c;而且我希望是可以直接使用代码进行拼接&#xff0c;于是就有了这么一个工具包。 插件效果 通过该插件&#xff0c;我们可以将图片进…

力扣(leetcode)1121和1251题(MySQL)

1121.查询结果的质量和占比 题目链接&#xff1a;1121.查询结果的质量和占比 解答 # Write your MySQL query statement below select query_name, round(avg(rating/position),2) as quality, round(100*avg(rating<3),2) as poor_query_percentage from Queries gro…

Python 直方图的绘制-`hist()`方法(Matplotlib篇-第7讲)

Python 直方图的绘制-hist()方法(Matplotlib篇-第7讲)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹…

插入排序,选择排序,冒泡排序,顺序搜索,二分搜索,迭代,求最大公因数,最小公倍数等简单模板

目录 1.排序 1.插入排序模板 2.冒泡排序模板 3.选择排序模板 2.搜索 1.顺序搜索 2.二分搜索 3.迭代 1.基础迭代 ​编辑 4.求最大公因数&#xff0c;最小公倍数 1.最直接的方法 取巧一点 2.辗转相除法&#xff08;欧几里得法&#xff09; 1.排序 1.插入排序模板 插…

机器学习---比较单个学习器与Bagging集成的偏差-方差分解、在Iris数据集的不同特征子集上使用不同的分类器进行训练和可视化

1. Bagging 说明并比较了预期均方误差的偏差方差分解&#xff0c;单个学习器与bagging集成的比较。 在回归中&#xff0c;估计器的预期均方误差可以根据偏差、方差和噪声进行分解。 在回归问题的数据集上的平均值上&#xff0c;偏差项测量估计器的预测与问题的最佳可能估计器…

2023版本QT学习记录 -6- UDP通信之UDP接收端

———————UDP接收端——————— &#x1f384;动图演示 &#x1f384;发送端通信步骤思维导图 &#x1f384;添加组件 QT core gui network&#x1f384;添加头文件 #include "qudpsocket.h"&#x1f384;创建接收对象 QUdpSocket *recvsocket;&…

2023年12月25日学习总结——MLP

&#x1f4a1;我准备每一天都写一个学习总结&#xff0c;周末再把每日的学习总结汇总成专门的文章 &#x1f506;我的学习总结主要是为了自己的个人学习&#xff0c;没有商业用途&#xff0c;侵删 okkk开始今日学习 目录 1、今日计划学习内容2、今日学习内容深入学习MLP&#…

MySQL的事务-隔离级别

上篇&#xff0c;整理了MySQL事务的原子性&#xff0c;这篇继续整理MySQL事务的一致性、隔离性和持久性。 2. 一致性指的是事务开始前和结束后&#xff0c;数据库的完整性约束没有被破坏&#xff0c;这保证了数据的完整性和一致性。一致性必须确保数据库从一个一致的状态转换到…

结构体的对齐规则

1.引入 我们在掌握了结构体的基本使⽤后。 现在我们深⼊讨论⼀个问题&#xff1a;计算结构体的大小。 这也是⼀个特别热门的考点&#xff1a; 结构体内存对齐。 2.具体分析 ⾸先我们得掌握结构体的对⻬规则&#xff1a; 1. 结构体的第⼀个成员对⻬到和结构体变量起始位置偏移量…

智能变电站协议系列-3、MMS协议示例(IEC61850)

文章目录 一、前言二、资料收集三、libiec61850的MMS协议的操作文件的示例运行及抓包分析1、协议理解2、代码查看及示例运行3、wireshark抓包及分析 四、最后 一、前言 接下来我们来分析一下MMS协议&#xff0c;该协议比较抽象&#xff0c;从定义上和理解上都比较抽象&#xf…

阶段七-GitEE

Git&#xff1a;版本控制软件 Git的优点 1.1 协同修改 多人并行不悖的修改服务器端的同一个文件。 1.2 数据备份 不仅保存目录和文件的当前状态&#xff0c;还能够保存每一个提交过的历史状态。 1.3 版本管理 在保存每一个版本的文件信息的时候要做到不保存重复数据&…

【Git】fatal: bad boolean config value ‘true~‘ for ‘core.longpaths‘

windwos操作系统git config设置错了参数值&#xff0c;解决方法。 出现原因 在拉取代码时&#xff0c;仓库中存在文件名过长得文件&#xff0c;拉取报错了“filename too long” 解决 git config --system core.longpaths true结果在复制命令时&#xff0c;粘贴到命令行多了一…

第19章总结

一.Java绘图类 1.Graphics类 Graphics类是所有图形上下文的抽象基类&#xff0c;它允许应用程序在组件以及闭屏图像上进行绘制。Graphics类封装了Java支持的基本绘图操作所需的状态信息&#xff0c;主要包括颜色、字体、画笔、文本、图像等。 2.Graphics2D类 Graphics2…

【MySQL】脏读、不可重复读、幻读介绍及代码解释

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; 数 据 库 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 结语 我的其他博客 前言 数据库事务隔离级别是关系数据库管理系统中一个重要的概念&#xff0c;它涉及到多个事务并发执行…