当前位置: 首页 > news >正文

泛型与Map接口

Java学习之道


泛型

泛型这种参数类型可以用在类、方法和接口中,分别被称为泛型类,泛型方法,泛型接口

  • 参数化类型:将类型由原来的具体的类型参数化,在使用/调用时传入具体的类型
  • JDK5引入特性
  • 提供了安全检测机制,编译时就能检测
  • 避免了强制类型转换

泛型类

在这里插入图片描述

格式
在这里插入图片描述
测试类
在这里插入图片描述

在上面会遇到就是每次定义都需要在<—>写一次对应类型,为此有了以下提升,写一次即可,来看泛型方法

泛型方法

在这里插入图片描述
格式:
在这里插入图片描述
测试类
在这里插入图片描述

泛型接口

在这里插入图片描述
格式
在这里插入图片描述
接口实现类
在这里插入图片描述
测试类
在这里插入图片描述

同样,以泛型方法的方式去编写代码也可以<不用因为类型不同每次new对象>

接口类
在这里插入图片描述
接口实现类
在这里插入图片描述
测试类
在这里插入图片描述

类型通配符

为了表示各种泛型List的父类,可以使用类型通配符

  • 类型通配符:<?> List<?>:表示元素类型未知的List,它的元素可以匹配任何类型
    带通配符的List仅表示他是各种泛型List的父类,并不能把元素添加进入
  • 如果我们不希望List<?>是任何泛型List的父类,只希望它代表某一类泛型,可以使用类型通配符上限
    类型通配符上限:<? extends 类型>
    List<? extends Number>:表示的类型是Number或者其子类型
  • 类型通配符下限
    格式:<? super 类型>
    List<? super Number>:它表示类型是Number或者其父类型

在这里插入图片描述

可变参数

可变参数又称参数个数可变,用作方法的形参出现,那么方法参数个数就是可变的

样例:

#格式:修饰符 返回值类型 方法名(数据类型...变量名){}
public static int sum(int...a){}

简单的几个数字求和,但是没办法确定到底多少个,也可以用泛型,对应数字就可以看成一个数组

可变参数注意事项:

  • 这里的变量其实是一个数组
  • 如果方法有多个参数,包含可变参数,可变参数要放在最后

在这里插入图片描述

可变参数使用

Arrays工具类中有一个静态方法

asList返回的集合不能做增删操作可以修改操作

#返回由指定数组支持的固定大小的列表
public static<T> List<T> asList(T...a)

在这里插入图片描述

List接口中有一个静态方法

返回的集合不能做增删改操作

//返回包含任意数量元素的不可变列表
public static<E> List<E> of(E...elements) 

在这里插入图片描述

set接口中有一个静态方法

  • 在给元素的时候不能给重复的元素
  • 返回的集合不能做增删操作,没有修改的方法
//返回一个包含任意数量元素的不可变集合
public static <E> Set<E> of(E...elements)

在这里插入图片描述

Map集合【接口】

Map集合概述和使用

Map集合概述

  • Interface Map<K,V> K:键的类型; V:值的类型
  • 将键映射到值的对象;不能包含重复的键;每个键可以映射到最多一个值
  • 举例:学生的学号和姓名
    itheima001 林青霞
    itheima002 张曼玉
    itheima003 王祖贤

创建Map集合的对象

  • 多态的方式
  • 具体的实现类HashMap

Map添加元素方法(put)

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

如果元素添加键值跟相同,则后者会覆盖前者

在这里插入图片描述

Map集合的基本功能

刚才上面已经介绍了一种功能,添加元素put

//添加元素
V put(K key,V value) 
//根据键删除键值对元素
V remove(Object key)
//移除所有键值对元素
void clear()
//判断集合是否包含指定键
boolean containsKey(Object key)
//判断集合是否包含指定元素
boolean containsValue(Object value)
//判断集合是否为空
boolean isEmpty()
//集合长度,也就是几何中键值对的个数
int size()

代码展示:
在这里插入图片描述
Terminal
在这里插入图片描述

Map集合获取功能

在元素put进入Map中之后怎么获取呢,如下

//按键值获取
V get(Object key)
//获取所有键的集合
Set<K> keySet()
//获取所有值的集合
Collection<V> values()
//获取所有键值对对象的集合
Set<Map.Entry<K,V>>entrySet()

Map遍历一

案例

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

Map遍历二

前面的内容都是单纯元素之间的遍历,后面我们尝试对象的Map数组存入并遍历,冲压

案例:
在这里插入图片描述
Terminal
在这里插入图片描述

这里通过两种方法:一种是通过键找值,另一种是通过键值对对象找键和值

案例

ArrayList集合存储HashMap元素并遍历

在这里插入图片描述
代码展示
在这里插入图片描述
Terminal
在这里插入图片描述

案例2:HashMap集合存储ArrayList元素并遍历

在这里插入图片描述
代码展示
在这里插入图片描述
Terminal
在这里插入图片描述

案例3:键盘录入一串字符,然后输出每个字符出现的次数

代码展示
在这里插入图片描述
在这里插入图片描述
Terminal
在这里插入图片描述

在这里不难看出,所输出的内容并非按照顺序排列,所以我们应该使用TreeMap

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

总结

对于泛型与Map接口的使用就说到这,还需要多练习

相关文章:

泛型与Map接口

Java学习之道 泛型 泛型这种参数类型可以用在类、方法和接口中&#xff0c;分别被称为泛型类&#xff0c;泛型方法&#xff0c;泛型接口 参数化类型&#xff1a;将类型由原来的具体的类型参数化&#xff0c;在使用/调用时传入具体的类型JDK5引入特性提供了安全检测机制&#xf…...

Unity Bug记录本

//个人记录&#xff0c;持续更新 1、将此代码挂载到空脚本上&#xff1a; bool flag (object)GetComponent<Camera>() null; bool flag1 (object)GetComponent<Text>() null; Debug.Log(flag"::"flag1); //输出结果&#xff1a;False::True bool…...

B. The Number of Products)厉害

You are given a sequence a1,a2,…,ana1,a2,…,an consisting of nn non-zero integers (i.e. ai≠0ai≠0). You have to calculate two following values: the number of pairs of indices (l,r)(l,r) (l≤r)(l≤r) such that al⋅al1…ar−1⋅aral⋅al1…ar−1⋅ar is neg…...

一起Talk Android吧(第五百一十二回:自定义Dialog)

文章目录整体思路实现方法第一步第二步第三步第四步各位看官们大家好&#xff0c;上一回中咱们说的例子是"自定义Dialog主题",这一回中咱们说的例子是" 自定义Dialog"。闲话休提&#xff0c;言归正转&#xff0c; 让我们一起Talk Android吧&#xff01;整体…...

GinVueAdmin源码分析3-整合MySQL

目录文件结构数据库准备配置文件处理config.godb_list.gogorm_mysql.gosystem.go初始化数据库gorm.gogorm_mysql.go开始初始化测试数据库定义实体类 Userserviceapi开始测试&#xff01;文件结构 本文章将使用到上一节创建的 CommonService 接口&#xff0c;用于测试连接数据库…...

大数据框架之Hadoop:MapReduce(三)MapReduce框架原理——MapReduce开发总结

在编写MapReduce程序时&#xff0c;需要考虑如下几个方面&#xff1a; 1、输入数据接口&#xff1a;InputFormat 默认使用的实现类是&#xff1a;TextInputFormatTextInputFormat的功能逻辑是&#xff1a;一次读一行文本&#xff0c;然后将该行的起始偏移量作为key&#xff0…...

requests---(4)发送post请求完成登录

前段时间写过一个通过cookies完成登录&#xff0c;今天我们写一篇通过post发送请求完成登录豆瓣网 模拟登录 1、首先找到豆瓣网的登录接口 打开豆瓣网站的登录接口&#xff0c;请求错误的账号密码&#xff0c;通过F12或者抓包工具找到登录接口 通过F12抓包获取到请求登录接口…...

Python抓取数据具体流程

之前看了一段有关爬虫的网课深有启发&#xff0c;于是自己也尝试着如如何过去爬虫百科“python”词条等相关页面的整个过程记录下来&#xff0c;方便后期其他人一起来学习。 抓取策略 确定目标&#xff1a;重要的是先确定需要抓取的网站具体的那些部分&#xff0c;下面实例是…...

【Python学习笔记】第二十四节 Python 正则表达式

一、正则表达式简介正则表达式&#xff08;regular expression&#xff09;是一个特殊的字符序列&#xff0c;它能帮助你方便的检查一个字符串是否与某种模式匹配。正则表达式是对字符串&#xff08;包括普通字符&#xff08;例如&#xff0c;a 到 z 之间的字母&#xff09;和特…...

数字逻辑基础:原码、反码、补码

时间紧、不理解可以只看这里的结论 正数的原码、反码、补码相同。等于真值对应的机器码。 负数的原码等于机器码&#xff0c;反码为原码的符号位不变&#xff0c;其余各位按位取反。补码为反码1。 三种码的出现是为了解决计算问题并简化电路结构。 在原码和反码中&#xff0c;存…...

有限差分法-差商公式及其Matlab实现

2.1 有限差分法 有限差分法 (finite difference method)是一种数值求解偏微分方程的方法,它将偏微分方程中的连续变量离散化为有限个点上的函数值,然后利用差分逼近导数,从而得到一个差分方程组。通过求解差分方程组,可以得到原偏微分方程的数值解。 有限差分法是一种历史…...

高校就业信息管理系统

1引言 1.1编写目的 1.2背景 1.3定义 1.4参考资料 2程序系统的结构 3登录模块设计说明一 3.1程序描述 3.2功能 3.3性能 3.4输人项 3.5输出项 3.6算法 3.7流程逻辑 3.8接口 3.10注释设计 3.11限制条件 3.12测试计划 3.13尚未解决的问题 4注册模块设计说明 4.…...

【Java|golang】2373. 矩阵中的局部最大值

给你一个大小为 n x n 的整数矩阵 grid 。 生成一个大小为 (n - 2) x (n - 2) 的整数矩阵 maxLocal &#xff0c;并满足&#xff1a; maxLocal[i][j] 等于 grid 中以 i 1 行和 j 1 列为中心的 3 x 3 矩阵中的 最大值 。 换句话说&#xff0c;我们希望找出 grid 中每个 3 x …...

根据指定函数对DataFrame中各元素进行计算

【小白从小学Python、C、Java】【计算机等级考试500强双证书】【Python-数据分析】根据指定函数对DataFrame中各元素进行计算以下错误的一项是?import numpy as npimport pandas as pdmyDict{A:[1,2],B:[3,4]}myDfpd.DataFrame(myDict)print(【显示】myDf)print(myDf)print(【…...

【蓝桥杯集训·每日一题】AcWing 3502. 不同路径数

文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴一、题目 1、原题链接 3502. 不同路径数 2、题目描述 给定一个 nm 的二维矩阵&#xff0c;其中的每个元素都是一个 [1,9] 之间的正整数。 从矩阵中的任意位置出发&#xf…...

Java - 数据结构,二叉树

一、什么是树 概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。它具有以下的特点&#xff1a; 1、有…...

模拟QQ登录-课后程序(JAVA基础案例教程-黑马程序员编著-第十一章-课后作业)

【案例11-3】 模拟QQ登录 【案例介绍】 1.案例描述 QQ是现实生活中常用的聊天工具&#xff0c;QQ登录界面看似小巧、简单&#xff0c;但其中涉及的内容却很多&#xff0c;对于初学者练习Java Swing工具的使用非常合适。本案例要求使用所学的Java Swing知识&#xff0c;模拟实…...

【壹】嵌入式系统硬件基础

随手拍拍&#x1f481;‍♂️&#x1f4f7; 日期: 2023.2.28 地点: 杭州 介绍: 日子像旋转毒马&#x1f40e;&#xff0c;在脑海里转不停&#x1f92f; &#x1f332;&#x1f332;&#x1f332;&#x1f332;&#x1f332; 往期回顾 &#x1f332;&#x1f332;&#x1f332…...

当参数调优无法解决kafka消息积压时可以这么做

今天的议题是&#xff1a;如何快速处理kafka的消息积压 通常的做法有以下几种&#xff1a; 增加消费者数增加 topic 的分区数&#xff0c;从而进一步增加消费者数调整消费者参数&#xff0c;如max.poll.records增加硬件资源 常规手段不是本文的讨论重点或者当上面的手段已经使…...

Java线程池源码分析

Java 线程池的使用&#xff0c;是面试必问的。下面我们来从使用到源码整理一下。 1、构造线程池 通过Executors来构造线程池 1、构造一个固定线程数目的线程池&#xff0c;配置的corePoolSize与maximumPoolSize大小相同&#xff0c; 同时使用了一个无界LinkedBlockingQueue存…...

手撕八大排序(下)

目录 交换排序 冒泡排序&#xff1a; 快速排序 Hoare法 挖坑法 前后指针法【了解即可】 优化 再次优化&#xff08;插入排序&#xff09; 迭代法 其他排序 归并排序 计数排序 排序总结 结束了上半章四个较为简单的排序&#xff0c;接下来的难度将会大幅度上升&…...

SAP 详细解析SCC4

事务代码&#xff1a;SCC4&#xff0c;选择一个客户端&#xff0c;点击进入&#xff0c;如图&#xff1a; 一、客户端角色 客户控制&#xff1a;客户的角色&#xff08;生产性&#xff0c;测试&#xff0c;...&#xff09; 此属性表示 R/3 系统中的客户端角色。其中可能包括…...

java异常分类和finally代码块中return语句的影响

首先看一下java中异常相关类的继承关系&#xff1a; 引用 1、分类 异常可以分为受查异常和非受查异常&#xff0c;Error和RuntimeException及其所有的子类都是非受查异常&#xff0c;其他的是受查异常。 两者的区别主要在&#xff1a; 受检的异常是由编译器&#xff08;编译…...

【链表OJ题(二)】链表的中间节点

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;数据结构 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录链表OJ题(二)1. 链表…...

【强烈建议收藏:MySQL面试必问系列之并发事务锁专题】

一.知识回顾 上节课我们一起学习了MySQL面试必问系列之事务&#xff0c;没有学习的同学可以看一下上一篇文章&#xff0c;肯定对你会有帮助&#xff0c;学习过的同学肯定知道&#xff0c;上节课我们留了一个小尾巴&#xff0c;这个小尾巴是什么呢&#xff1f;就是没有详细展开…...

Linux下使用Makefile实现条件编译

在Linux系统下Makefile和C/C语言都有提供条件选择编译的语法&#xff0c;就是在编译源码的时候&#xff0c;可以选择性地编译指定的代码。这种条件选择编译的使用场合有好多&#xff0c;例如我们开发一个兼容标准版本与定制版本兼容的项目&#xff0c;那么&#xff0c;一些与需…...

java 应用cpu飙升(超过100%)故障排查

前言害。。。昨天刚写完一份关于jvm问题排查相关的博客&#xff0c;今天线上项目就遇到了一个突发问题。现象是用户反映系统非常卡&#xff0c;无法操作。然后登录服务器查看发现cpu 一直100%以上。具体排查步骤&#xff1a;1&#xff0c;首先top命令查看服务器cpu等情况&#…...

光学设计软件Ansys的Lumerical 2023版本下载与安装使用

文章目录前言一、许可管理工具安装二、许可管理器配置三、Lumerical安装四、工具使用配置总结前言 Lumerical是一款功能强大的软件&#xff0c;用于设计和分析从组件到系统阶段的光子学和电磁学。这个版本的Lumerical改进了电子和光子学设计工具&#xff0c;用于复杂光子学&am…...

Java 异常

文章目录1. 异常概述2. JVM 的默认处理方案3. 异常处理之 try...catch4. Throwable 的成员方法5. 编译异常和运行异常的区别6. 异常处理之 throws7. 自定义异常8. throws 和 throw 的区别1. 异常概述 异常就是程序出现了不正常的情况。 ① Error&#xff1a;严重问题&#xff…...

JavaSE学习笔记day17

零、 复习昨日 File: 通过路径代表一个文件或目录 方法: 创建型,查找类,判断类,其他 IO 输入& 输出字节&字符 try-catch代码 一、作业 给定路径删除该文件夹 public static void main(String[] args) {deleteDir(new File("E:\\A"));}// 删除文件夹public s…...

做农产品的网站名称/产品推广ppt范例

点击上方“蓝色字”可关注我们&#xff01;暴走时评&#xff1a;尽管存在许多不明确法规和相应限制&#xff0c;但印度的大型企业和银行仍然采用加密货币 - 或至少是支持加密货币的一些技术 - 作为一种更可靠的方式来协调账户、付款、保存适当的记录和管理内部资金。根据“印度…...

网站分屏布局设计/百度指数关键词

算法题——分配礼物问题描述问题分析代码实现总结问题描述 圣诞节到了&#xff0c;圣诞老人准备了n 个礼物给k小朋友&#xff0c;每个礼物都是一样的。请问将这n个礼物分给k个小朋友&#xff0c;有多少种分法&#xff1f; 编写一个程式&#xff0c;输入是礼物的数量n和小朋友数…...

青海省住房和建设厅网站首页/市场调研与分析

https://mp.weixin.qq.com https://mp.weixin.qq.com/s?__bizMzI3NzE0NjcwMg...

计算机企业网站建设论文/广州网站seo推广

给你一个非空的字符串 ​​s​​​ 和一个整数 ​​k​​​ &#xff0c;你要将这个字符串 ​​s​​ 中的字母进行重新排列&#xff0c;使得重排后的字符串中相同字母的位置间隔距离 至少 为 ​​k​​​ 。如果无法做到&#xff0c;请返回一个空字符串 ​​""​​。…...

网站开发平台/seo优化排名软件

用pycharm写python的时候&#xff0c;总会在def function()的那行出现如上问题。 “PEP 8: expected 2 blank lines, found 1” 具体原因就是呢&#xff0c;在声明函数的那一行的上方必须有两行的空行&#xff0c;否则便出现这个情况。 函数的注释可随函数为一体 # coding: u…...

门户网站建设与推广方案/汽车营销活动策划方案

本质上&#xff0c;这很可能是坏块引发的&#xff0c;所以需要调查 关联的Table 中的坏块状况&#xff1a; Excerpt of trace file *** 2017-08-18 09: 23: 04.323 dbkedDefDump (): Starting incident default dumps (flags 0x2, level 3, mask 0x0) [TOC00009] ----- Cur…...