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

韩顺平0基础学Java——第27天

p548-568

明天开始坦克大战

Entry

昨天没搞明白的Map、Entry、EntrySet://GPT教的

`Map` 和 `Entry` 的关系

1.Map 接口:它定义了一些方法来操作键值对集合。常用的实现类有 `HashMap`、`TreeMap` 等。

2. Entry接口:`Entry` 是 `Map` 接口的一个嵌套接口,表示 `Map` 中的一个键值对。每个 `Entry` 包含一个键和一个值。

`EntrySet` 的使用

`entrySet()` 是 `Map` 接口中的一个方法,返回的是 `Map` 中所有键值对(`Entry`)的一个视图。这是一个 `Set<Map.Entry<K,V>>` 类型的集合,表示 `Map` 中的所有键值对。

使用示例

public class Homework03 {public static void main(String[] args) {HashMap map = new HashMap();map.put("jack",650);map.put("tom",1200);map.put("smith",2900);System.out.println(map);//给jack换工资map.put("jack",1000);System.out.println(map);//遍历//取出value也可以啊?//不能,事实证明,value只是一个副本,并不会影响到真的值​​​​Collection values = map.values();for(Object o:values){o=(Integer)o+100;}Set ks = map.keySet();System.out.println(map);for(Object o : ks){ //取出来的o是key,然后根据key更新map.put(o,(Integer)map.get(o)+100);}System.out.println(map);System.out.println("=============================");//遍历-EntrySetSet es = map.entrySet();//Entry是map的内部嵌套接口,包含一个键值对信息,entryset方法返回的是set集合,是每一个Entry的映射Iterator i = es.iterator();while (i.hasNext()){Map.Entry next = (Map.Entry)i.next();//获取每一个键值对?System.out.println(next.getKey()+"***"+next.getValue());}}
}

去重机制

试分析HashSet和TreeSet分别如何实现去重的
(1) HashSet的去重机制: hashCode() + equals(),底层先通过存入对象,进行运算得到一个hash值,通过hash值得到对应的索引,如果发现table索引所在的位置,没有数据,就直接存放,如果有数据,就进行equals比较[遍历比较],如果比较后,不相同,就加入,否则就不加入.
(2) TreeSet的去重机制:如果你传入了一个Comparator匿名对象,就使用实现的compare去重,如果方法返回0,就认为是相同的元素/数据,就不添加,如果你没有传入一个Comparator匿名对象,则以你添加的对象实现的Compareable接口的compareTo去重.即动态绑定机制。如果是自定义的类,那就去implements接口,然后实现compareTo

坑好多的Homework:已经重写了hashcode和equals

在p1的name换成CC时,它的hash就不一样了,remove的时候就不会定位到第一次加入的p1,接下来new的这个1001-CC,会加入到刚刚想要remove的地方。最后new的1001-AA会加入到p1的位置,但是这里有p1了,可是值不一样(p1已经被改成了CC),所以它会挂在p1后面

Vector和ArrayList比较!




泛型

有些方法只能传入固定的类型,如果不小心传入了别的,就会出事。

1)编译时,检查添加元素的类型,提高了安全性

2)减少了类西转换的次数,提高效率
不使用泛型

Dog -> Object -> Dog //放入到ArrayList 会先转成Object,在取出时,还需要转换成Dog√

使用泛型

Dog-> Dog -> Dog //放入时,和取出时,不需要类型转换,提高效率

3)不再提示编译警告

泛型介绍

int a = 10;
老韩理解:泛(广泛)型(类型)=> Integer, String,Dog

泛型就是指定数据类型的一种数据类型
1)泛型又称参数化类型,是Jdk5.0出现的新特性,解决数据类型的安全性问题

2)在类声明或实例化时只要指定好需要的具体的类型即可。
3) Java泛型可以保证如果程序在编译时没有发出警告,运行时就不会产生ClassCastException异常。同时,代码更加简洁、健壮
4)泛型的作用是:可以在类声明时通过一个标识表示类中某个属性的类型,或者是某个方法的返回值的类型,或者是参数类型。
例:在编译期间再确定E是什么类型。


泛型的语法

●泛型的声明
interface接口<T>{}和class类<K,V>{}

比如:List ,ArrayList
说明:
1)其中,T,K,V不代表值,而是表示类型。
2)任意字母都可以。常用T表示,是Type的缩写
泛型的实例化:
要在类名后面指定类型参数的值(类型)。如:
1) List<String> strList = new ArrayList<String>();

2) Iterator<Customer> iterator = customers.iterator():
 

泛型使用细节

1.给泛型指向数据类型必须是引用类型,不能是基本数据类型

2.再给泛型制定类型时,可以传它本身类型或它的子类型。

3.泛型的使用形式

        ArrayList <Integer> list = new ArrayList<Integer>();

        ArrayList <Integer> list = new ArrayList<>();//尖括号里可以省略,它自动填入编译类型的规定泛型

4.当你不给泛型指定数据类型,会默认是Object

自定义泛型

基本语法
class类名<T, R..> {成员)//可以有多个泛型
.注意细节
1)普通成员可以使用泛型(属性、方法)

2)使用泛型的数组,不能初始化
3)静态方法和静态属性中不能使用类的泛型。因为在类加载时,对象还没创建,而静态方法是和类相关的,所以不能完成初始化。
4)泛型类的类型,是在创建对象时确定的(因为创建对象时,需要指定确定类型)

5)如果在创建对象时,没有指定类型,默认为Object

例如:这Tiger就是自定义泛型!

自定义泛型接口

interface 接口名<T,R...>{}
1)接口中,静态成员也不能使用泛型(这个和泛型类规定一样)

2)泛型接口的类型,在继承接口或者实现接口时确定
3)没有指定类型,默认为Object

>泛型接口注意细节
1)接口中,静态成员也不能使用泛型(这个和泛型类规定一样)2)泛型接口的类型,在继承接口或者实现接口时确定
3)没有指定类型,默认为Object(就是你去继承接口或者实现接口的时候啥都不写,但是不推荐这么搞)

自定义泛型方法

修饰符<T,R..>返回类型方法名(参数列表){)
·注意细节
1.泛型方法,可以定义在普通类中,也可以定义在泛型类中
2.当泛型方法被调用时,类型会确定
3. public void eat(E e)0,修饰符后没有<T,R..> eat方法不是泛型方法,而是使用了泛型
 

泛型的继承和通配符

1)泛型不具备继承性
List<Object> list = new ArrayList<String>0;1/对吗?不对,泛型不具有继承性

2)<?>︰支持任意泛型类型
3)<? extends A>:支持A类以及A类的子类,规定了泛型的上限
4)<? super A>:支持A类以及A类的父类,不限于直接父类,规定了泛型的下限

JUnit测试框架

如图。一把用JUnit5


明天就是坦克大战了
 


 

相关文章:

韩顺平0基础学Java——第27天

p548-568 明天开始坦克大战 Entry 昨天没搞明白的Map、Entry、EntrySet&#xff1a;//GPT教的 Map 和 Entry 的关系 1.Map 接口&#xff1a;它定义了一些方法来操作键值对集合。常用的实现类有 HashMap、TreeMap 等。 2. Entry接口&#xff1a;Entry 是 Map 接口的一个嵌…...

YesPMP探索Python在生活中的应用,助力提升开发效率

Python是一种简单易学、高效强大的编程语言&#xff0c;正变成越来越多人选择的热门技能。学习Python不仅可以提供更多就业机会&#xff0c;还能让自己在职场更加有竞争力&#xff0c;那可以去哪里拓展自己的技能呢&#xff1f; YesPMP平台 为熟练掌握Python语言的程序员提供了…...

TikTok账号运营:静态住宅IP为什么可以防封?

静态住宅IP代理服务是一种提供稳定、静态IP地址并可隐藏用户真实IP地址的网络代理服务。此类代理服务通常使用高速光纤网络来提供稳定、高速的互联网体验。与动态IP代理相比&#xff0c;静态住宅IP代理的IP地址更稳定&#xff0c;被封的可能性更小&#xff0c;因此更受用户欢迎…...

linux系统宝塔服务器temp文件夹里总是被上传病毒php脚本

目录 简介 上传过程 修复上传漏洞 tmp文件夹总是被上传病毒文件如下图: 简介 服务器时不时的会发送短信说你服务器有病毒, 找到了这个tmp文件, 删除了之后又有了。 确实是有很多人就这么无聊, 每天都攻击你的服务器。 找了很久的原因, 网上也提供了一大堆方法,…...

HTML+CSS+PHP实现网页留言板功能(需要创建数据库)

话说前头&#xff0c;我这方面很菜滴。这是我网页作业的一部分。 1.body部分效果展示&#xff08;不包括footer&#xff09; 2、代码 2.1 leaving.php&#xff08;看到的网页&#xff09; <!DOCTYPE html> <html lang"en"> <head> <met…...

【谷歌】实用的搜索技巧

1、使用正确的谷歌网址 我们知道https://www.google.com是谷歌的网址。但根据国家,用户可能会被重定向到 google.fr(法国)或google.co.in(印度)。 最主要的URL——google.com是为美国用户准备的(或是针对全世界所有用户的唯一URL))。当你在谷歌上搜索时,了解这一点是相…...

打造完美启动页:关键策略与设计技巧

启动页&#xff08;Splash Screen&#xff09;设计是指在应用程序启动时&#xff0c;首先展示给用户的界面设计。这个界面通常在应用加载或初始化期间显示&#xff0c;其主要目的是为用户提供一个视觉缓冲&#xff0c;展示品牌标识&#xff0c;并减少用户在等待过程中的焦虑感。…...

电子书(chm)-加载JS--CS上线

免责声明: 本文仅做技术交流与学习... 目录 cs--web投递 html(js)代码 html生成chm工具--EasyCHM 1-选择powershell 模式 生成 2-选择bitsadmin模式生成 chm反编译成html cs--web投递 cs配置监听器--->攻击---->web投递---> 端口选择没占用的, URL路径到时候会在…...

理解HTTP请求格式

HTTP概念 HTTP全称HyperTextTransfer Protocol(超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议&#xff1b;HTTP是一个客户端&#xff08;用户&#xff09;和服务端&#xff08;网站&#xff09;之间请求和响应的标准。 HTTP 协议是以 ASCII 码传输&…...

差分数组汇总

本文涉及知识点 算法与数据结构汇总 差分数组 令 a[i] ∑ j : 0 i v D i f f [ i ] \sum_{j:0}^{i}vDiff[i] ∑j:0i​vDiff[i] 如果 vDiff[i1]&#xff0c;则a[i1…]全部 如果vDiff[i2]–,则a[i2…]全部–。 令11 < i2 &#xff0c;则&#xff1a; { a [ i ] 不变&…...

SpringBoot | 实现邮件发送

运行环境&#xff1a; IntelliJ IDEA 2022.2.5 (Ultimate Edition) (注意&#xff1a;idea必须在2021版本以上&#xff09;JDK17 项目目录&#xff1a; 该项目分为pojo,service,controller,utils四个部分&#xff0c; 在pojo层里面写实体内容&#xff08;发邮件需要的发件人邮…...

spring boot接入nacos 配置中心

再接入nacos配置中心时&#xff0c;需要确认几点&#xff1a; 1. spring boot 版本 (spring boot 2.x ) 2. nacos 配置中心 服务端 版本 (1.1.4) 3. nacos client 客户端版本 (1.1.4) 方式一 1. 启动 nacos 服务端&#xff0c;这里不做解释 在配置中心中加入几个配置 2. 在…...

产品应用 | 小盒子跑大模型!英码科技基于算能BM1684X平台实现大模型私有化部署

当前&#xff0c;在人工智能领域&#xff0c;大模型在丰富人工智能应用场景中扮演着重要的角色&#xff0c;经过不断的探索&#xff0c;大模型进入到落地的阶段。而大模型在落地过程中面临两大关键难题&#xff1a;对庞大计算资源的需求和对数据隐私与安全的考量。为应对这些挑…...

uniapp中u-input点击事件失效

当给u-input设置了disabled/readonly属性后&#xff0c;pc浏览器中点击事件失效&#xff0c;但是app/移动端h5中却仍有效 解决办法 给外边包上一个盒子设置点击事件&#xff0c;给input加上css属性&#xff1a;pointer-events&#xff1a;none pointer-events CSS 属性指定在什…...

[机器学习] 监督学习和无监督学习

监督学习和无监督学习是机器学习的两种主要方法&#xff0c;它们之间有几个关键区别&#xff1a; 1. 定义 监督学习&#xff08;Supervised Learning&#xff09;&#xff1a; 使用带标签的数据进行训练。数据集包括输入特征和对应的输出标签。目标是学习从输入特征到输出标签…...

使用Python进行自然语言处理:从基础到实战

使用Python进行自然语言处理:从基础到实战 自然语言处理(Natural Language Processing, NLP)是人工智能的重要领域,旨在处理和分析自然语言数据。Python凭借其丰富的库和社区支持,成为NLP的首选编程语言。本文将介绍自然语言处理的基础概念、常用的Python库以及一个实战项…...

Hadoop面试题总结

一 、介绍一下hadoop 综述:hadoop是一个适合海量数据的分布式存储和分布式计算的平台 分述:hadoop包含三大组件&#xff0c;分别是HDFS、MapReduce和YARN --HDFS(分布式文件系统) HDFS集群由NameNode,DataNode,SecondaryNameNode构成NameNode&#xff1a;主要负责接受用户请求…...

关于IntelliJ IDEA 2024.1版本更新的问题

希望文章能给到你启发和灵感&#xff5e; 感谢支持和关注&#xff5e; 阅读指南 序幕一、基础环境说明1.1 硬件环境1.2 软件环境 二、起因三、解决四、总结 序幕 近期&#xff0c;IntelliJ IDEA 推出了全新2024版本&#xff0c;相信很多编程的爱好者或者刚接触编程的小伙伴都会…...

双层循环和循环语句

echo 打印 echo -n 表示不换行输出 echo -e 表示输出转义字符 echo \b 相当于退格键&#xff08;backspace&#xff09; echo \n 换行&#xff0c;相当于回车 echo \f 换行&#xff0c;换行后的新行的开头连着上一行的行尾 echo \t 相当于tab健 &#xff08;…...

【Codesys】-计算开机通电运行时间,累计正常使用时间,故障停机时间

应客户要求&#xff0c;在程序添加了这个用来计算开机运行时间&#xff0c;原理就是取当前时间减去一开始记录的时间&#xff0c;没什么特别要求&#xff0c;记录一下使用的变量类型和数据写法&#xff0c;防止忘记了。 下文只写了一个开机通电运行时间的写法&#xff0c;累计…...

LINUX系统编程:线程的概念

目录 1.线程的概念 2.线程的理解 3.怎么做到划分代码的 本文主要介绍&#xff0c;在LIUNX下的线程。 1.线程的概念 在很多的书上的你可能见过这样的。 线程是进程内部的一个执行分支&#xff0c;线程是cpu调度的基本单位。 加载到内存的程序叫做进程。修正&#xff1a;进…...

如何更换OpenHarmony SDK API 10

OpenHarmony社区已经发布OpenHarmony SDK API 10 beta版本&#xff0c;有些 Sample案例 也有需要API10。那么如何替换使用新的OpenHarmony SDK API 10呢&#xff1f;本文做个记录。 1、如何获取OpenHarmony SDK 1.1 每日构建流水线 可以从OpenHarmony每日构建站点获取最新的…...

Java | Leetcode Java题解之第155题最小栈

题目&#xff1a; 题解&#xff1a; class MinStack {Deque<Integer> xStack;Deque<Integer> minStack;public MinStack() {xStack new LinkedList<Integer>();minStack new LinkedList<Integer>();minStack.push(Integer.MAX_VALUE);}public void …...

大润发超市购物卡怎么用?

收到大润发超市的礼品卡以后&#xff0c;我才发现&#xff0c;最近的大润发也得十来公里 为了100块的大润发打车也太不划算了 叫外送也不在配送范围内 最后没办法&#xff0c;在收卡云上出掉了&#xff0c;还好最近价格不错&#xff0c;也不亏&#xff0c;收卡云的到账速度也…...

【ai】tx2-nx:搭配torch的torchvision

微雪的教程pytorch_version 1.10.0 官方教程安装torch官方教程 依赖项 nvidia@tx2-nx:~/twork/03_yolov5$ $ sudo apt-get install libjpeg-dev zlib1g-dev lib...

深入浅出MyBatis:全面解析与实战指南

MyBatis 是一个优秀的持久层框架&#xff0c;它简化了 Java 应用与关系数据库之间的映射。对于大多数 Java 开发者而言&#xff0c;掌握 MyBatis 是必不可少的一部分。本文将详细介绍 MyBatis 的各个方面&#xff0c;包括其基本原理、配置、操作、动态 SQL、插件机制和高级应用…...

好用的linux一键换源脚本

最近发现一个好用的linux一键换源脚本&#xff0c;记录一下 官方链接 大陆使用 bash <(curl -sSL https://linuxmirrors.cn/main.sh)# github地址 bash <(curl -sSL https://raw.githubusercontent.com/SuperManito/LinuxMirrors/main/ChangeMirrors.sh) # gitee地址 …...

机器人----控制方式

位置控制 点位控制 点到点--PTP 只关心起点和目标点&#xff0c;不关心走过的轨迹。 连续轨迹控制 CP(continus path) eg&#xff1a;焊接&#xff0c;切割。 力控制 使用多大的力进行控制。 eg:用多大的力写字。...

json的特点

JJSON是一种轻量级的数据交换格式&#xff0c;它基于JavaScript编程语言的一个子集&#xff0c;采用完全独立于语言的文本格式&#xff0c;结构化程度高。 JSON的主要特点包括&#xff1a; 轻量级&#xff1a;JSON的格式紧凑&#xff0c;易于传输和解析。 结构化&#xff1a;…...

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 连续字母长度(100分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…...

成都制作网站公司简介/免费自助建站网站

相信不少学校已经开始展开了新生录取工作&#xff0c;繁重的新生录取工作给不少老师和学校的同事们带来了压力&#xff0c;如何快速的建立一个新生录取查询系统就成了眼下最需要的事情。今天小编就来介绍下如何用Excel制作一个新生录取查询系统。第一步&#xff1a;将学生入学考…...

网站域名攻击/谷歌排名优化入门教程

从XP直接升级到Windows 7后&#xff0c;是否对新的开始菜单感觉不习惯&#xff0c;或者说你就喜欢最原始的Windows开始菜单式样&#xff1f;XP里还能选择使用“经典样式”&#xff0c;可如今Windows 7干脆就没有这个选项了&#xff0c;怎么办呢&#xff1f; 如果你到网上搜索过…...

win2012 网站建设/惠州企业网站建设

题目链接&#xff1a;http://poj.org/problem?id2559 求所给柱状图内面积最大的矩形。 用了一个叫做单调栈的玩意&#xff0c;思路很像DP&#xff0c;就是每一个柱看作一个结构体&#xff0c;保存当前柱的高度以及它之前&#xff08;左侧&#xff09;所能到达的最大横坐标距离…...

net framework可以用来做网站吗/seo宣传网站

IoC容器提供了自动依赖装配的方式&#xff0c;为应用IoC容器提供很大的方便。在自动配置中&#xff0c;不需要显式的去指定Bean属性&#xff0c;只需要配置autowiring属性&#xff0c;IoC容器会根据这个属性配置&#xff0c;使用反射的方式查找属性的类型或者名字&#xff0c;然…...

网站建设用哪种语言最好/湘潭网站设计

在请求的时候,请求头里肯定要带着token,所以在登录成功以后,就要先把token存起来 //拿到商家的token,存起来let token"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqaWFuZyIsInRlbmFudElkIjoiNDAiLCJleHAiOjE2MjM4MTM0MDMsImlhdCI6MTYyMjUxNzQwM30.L-HvbqXLp9xgYRg…...

做网站有免费的吗/企业网站优化关键词

单纯clean project是不行的&#xff0c;选择File-Invalidate Caches/Restart&#xff0c;清除缓存&#xff0c;重启AS Android NDK 是在SDK前面又加上了"原生"二字&#xff0c;即Native Development Kit&#xff0c;因此又被Google称为"NDK"。 众所周知&am…...