![](https://img-blog.csdnimg.cn/8a48a56b3605497a8d405eaf9f5c4d8b.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java基础知识
文章平均质量分 75
0基础学习Java SE阶段基础知识点,提供技术点精华总结,为你提供更多的参考学习。
蜀州凯哥
人,量力而行!事,看透再说!
展开
-
读懂Java中的各种锁,看这一篇就足够了
非阻塞自旋的方式本身是有缺点的,不能完全代替阻塞同步,非阻塞自旋虽然避免了线程切换的开销但是会占用处理器的时间,如果锁被占用的时间很短,那么自旋等待的效果很好,如果锁被占用时间很长那么只会白白浪费处理器时间。了解阻塞和非阻塞前,大家需要知道唤醒和阻塞一个Java线程需要操作系统进行用户态到内核态的切换,这种切换是十分耗时处理器时间的,如果同步代码块的内容过于简单,状态转换消耗的时间可能比用户代码执行时间还长,这是十分不划算的,因此我们引入了非阻塞的概念。公平锁和非公平锁指的是获取线程获取锁时的顺序。原创 2023-11-03 07:53:51 · 236 阅读 · 0 评论 -
单例模式有几种写法?
单例模式是面试中的常客了,它的常见写法有 4 种:饿汉模式、懒汉模式、静态内部类和枚举,接下来我们一一来看。## 1.饿汉模式饿汉模式也叫预加载模式,它是在类加载时直接创建并初始化单例对象,所以它并不存在线程安全的问题。它是依靠 ClassLoader 类机制,在程序启动时只加载一次,因此不存在线程安全问题,它的实现代码如下:```javapublic class Singleton {// 1.防止外部直接 new 对象破坏单例模式private Singleton() {}/原创 2022-10-04 08:57:52 · 573 阅读 · 0 评论 -
Java多线程学习--从浅到深
目录一.多线程基础1.实现多线程的方法:2.callable返回值使用什么接收:3.简单线程用到的方法:4.线程的生命周期二.线程池1.使用工具类创建线程池-Executors2.使用ThreadPoolExecutor创建线程池--推荐3.Executor 和 ExecutorService 的区别收起目录一.多线程基础1.实现多线程的方法:.继承Thread类.实现Runnable接口-重写run方法.实现Callable接口-重写call方法2.callab原创 2022-09-23 08:16:02 · 210 阅读 · 0 评论 -
羊了个羊游戏开发思路解析和盈利模式
目录一、画面界面1.1 叠卡区1.2 翻牌区1.3 体验区二、逻辑控制三、代码放送四、如何盈利一、画面界面1.1 叠卡区(1)了解各个区域(2)叠卡区思路(3)叠卡区实现思路(4)叠卡区实现思路—循环上一个过程(5)循环上一个过程(6)摆放在第一层(7)循环摆放第2层直到第N层(8)错层摆放1.2 翻牌区(1)生成卡片刚刚我们分享过这个过程,准备一张卡片,复制3次,然后将卡片重合(2)翻牌区实现思路,也原创 2022-09-22 08:41:22 · 1612 阅读 · 0 评论 -
如何解决Git代码冲突问题?
1、解决思路在团队开发中,提交代码到Git仓库时经常会遇到代码冲突的问题。原因:多人对相同的文件进行了编辑,造成代码存在差异化解决方案:使用工具或git命令对比不同分支代码的差异化把不同分支中有效代码进行保留,合并成最终代码提交合并后的最终代码下面我们基于idea工具与git命令行两种实施操作开始动手实践。2、动手实践使用Idea工具解决对比不同分支代码的差异化选择有代码冲突的类后,进行Merge(合并)2. 把不同分支中有效代码进行保留,并合并成最终代码在原创 2022-09-20 19:07:11 · 6622 阅读 · 0 评论 -
Java开发掌握这些Linux命令就够了
目录一、导学二、安装服务命令1. 在线安装2. 离线安装三、文件操作命令1. 创建文件2. 编辑文件3. vi或vim内查找关键词4. 命令光标的移动5. vi或vim设置或取消行号6. vi或vim 调到末行及首行7. vim或vim删除行8. vi或vim复制行9. 不编辑查看文件全部内容10. 不编辑查找文件内容10. 统计某个关键字在文件中出现的次数11. 查看文件首行或尾行12. 替换文件内某个关键字13. 重命名文件14. 输出格式固定的文件中第几行第几原创 2022-09-20 19:00:30 · 567 阅读 · 0 评论 -
任意大整数的相加运算
目录一. 实现思路1.1 存储方式1.2 运算方式1.3 简单示例二. 完整代码清单三. 结束语大家好,今天我给大家带来了一个小程序,它实现了对两个任意大整数的相加运算。我们知道,在Java中对整数进行运算可以使用int类型,如果范围不够,可以使用long,再大可以使用double,如果想对更大的整数运算可以使用BigInteger类。今天,我们就自己来编写一段程序,实现对两个任意大的整数的加法运算。本文将按照以下的步骤讲解:1. 实现思路2. 完整代码清单3. 结束语一.原创 2022-09-20 18:56:10 · 189 阅读 · 0 评论 -
java中的notify和notifyAll有什么区别?
做 Java 开发的小伙伴,对 wait 方法和 notify 方法应该都比较熟悉,这两个方法在线程通讯中使用的频率非常高,但对于 notify 方法的唤醒顺序,有很多小伙伴的理解都是错误的,有很多人会认为 notify 是随机唤醒的,但它真的是随机唤醒的吗?带着这个疑问,我们尝试休眠 100 个线程,再唤醒 100 个线程,并把线程休眠和唤醒的顺序保持到两个集合中,最后再打印一下这两个集合,看一下它们的执行顺序,如果它们的顺序是一致的,那说明 notify 是顺序唤醒的,否则则是随机唤醒的,notif原创 2022-09-20 18:52:42 · 212 阅读 · 0 评论 -
控制台日历程序
朋友们大家好,今天我给大家带来一个控制台小程序——打印当月的日历,效果如下图:运行这个程序的时候是2022年7月30日,所以在日期的30后面加了一个*符号。这个程序很简单,但有些知识点我也会为大家详细介绍,接下来按这个顺序来为大家讲解:1. java.util.Calendar类的使用2. 控制台布局的设计3. 程序分步实现4. 完整代码清单5. 结束语一. java.util.Calendar类的使用在Java类库中有一个类:java.util.Calendar类,原创 2022-09-20 14:15:22 · 182 阅读 · 0 评论 -
Java底层HashMap的如何解释?
目录一、HashMap的构造方法1.HashMap构造方法2.构造方法里的putMapEntries方法3. tableSizeFor方法4. 移位的思想二、HashMap的底层原理map.put(k,v)实现原理map中resize方法map.get(k)实现原理三、HashMap常见面试题分析为何HashMap的数组长度一定是2的次幂?JDK1.7中形成的环形链表JDK1.8中HashMap的性能优化四、总结面试过的人都知道,HashMap是Java程序员在面试中最最最经原创 2022-09-20 14:09:24 · 268 阅读 · 0 评论 -
java对一个对象加锁,锁的是什么东西?
线程同步相关知识详解。一、同步代码块作用:把出现线程安全问题的核心代码给上锁原理:每次只能一个线程进入,执行完毕后自动解决,其他线程才可以进来执行。synchronized(同步锁对象) { 操作共享资源的代码(核心代码)}锁对象要求理论上:锁对象只要对于当前同时执行的现成来说是同一个对象即可。锁对象用任意唯一的对象好不好呢?不好,会影响其他无关线程的执行。锁对象的规范要求规范上:建议使用共享资源作为锁对象。对于实例方法建议使用this作为锁对象。原创 2022-09-19 08:52:08 · 1286 阅读 · 0 评论 -
Java的集合有什么?
目录常见的集合有哪些?List 、Set和Map 的区别ArrayList 了解吗?ArrayList 的扩容机制?怎么在遍历 ArrayList 时移除一个元素?Arraylist 和 Vector 的区别Arraylist 与 LinkedList的区别HashMap解决hash冲突的办法有哪些?HashMap用的哪种?使用的hash算法?为什么建议设置HashMap的容量?扩容过程?put方法流程?红黑树的特点?在解决 hash 冲突的时候,为什么选择先用链表,再转红黑原创 2022-09-13 08:59:22 · 713 阅读 · 0 评论 -
为了写好代码,你坚持了哪些好习惯?
1.修改完代码,记得自测一下改完代码,自测一下,是每位程序员必备的基本素养。尤其不要抱有这种侥幸心理:我只是改了一个变量或者我只改了一行配置代码,不用自测了。改完代码,尽量要求自己都去测试一下哈,可以规避很多不必要bug的。2. 方法入参尽量都检验入参校验也是每个程序员必备的基本素养。你的方法处理,必须先校验参数。比如入参是否允许为空,入参长度是否符合你的预期长度。这个尽量养成习惯吧,很多低级bug都是不校验参数导致的。如果你的数据库字段设置为varchar(16),对方传了一个32位的字原创 2022-09-12 14:11:06 · 159 阅读 · 0 评论 -
java中do、dto、vo、po的区别?
从另外一个回答复制过来:就比如说我用一个实际场景举例子吧,你更好懂,假如有一张user表,里面有几个字段:user_id user_name pass_word create_time dept_id假设就这么多吧,一张很基础的表,那么对应Java的写法就是一个类:class User{private Long userId;private String userName;private String passWord;private LocalDateT原创 2022-09-11 15:49:00 · 2830 阅读 · 1 评论 -
干掉visio,这个画图神器真的绝了
前言看过我以往文章的小伙伴可能会发现,我的大部分文章都有很多配图。我的文章风格是图文相结合,更便于大家理解。最近有很多小伙伴发私信问我:文章中的图是用什么工具画的。他们觉得我画的图风格挺小清新的,能够让人眼前一亮。先上几张图让大家看看效果:说实话,问我的人太多了,我真的没法一个个回复。同时问我的人多,也恰恰说明了这个工具的优秀。今天特地写一篇介绍画图工具的文章,给有需要的朋友一个参考。1. 用什么画的图?对于画流程图的工具,之前大家用得比较多的可能是:visio和pro原创 2022-09-10 20:32:46 · 448 阅读 · 0 评论 -
怎么样设计一个高质量的 API 接口?
一、什么是幂等性?对于同一笔业务交易,不管调用多少次,只会成功处理一次。二、幂等性设计我们转账业务为例,来说明一下这个问题,转账接口一定要做到幂等性,否则会出现重复转账的问题。调用转账接口从A中转100元资金给B,参数中会携带业务流水号biz_no和源账户A,目的账户B,和转账金额100,业务流水号biz_no是唯一的。转账接口实现有以下实现方式。1 方式1(普通方式)过程如下:1.接收到转账请求2.根据biz_no查询当前订单是否处理过3.如果订单已处理直接返回,若未原创 2022-09-07 08:01:20 · 216 阅读 · 0 评论 -
API经济下新物种的诞生
互联网上的应用层出不穷,信息技术也带来了前所未有的想法和新的商业冒险,为了更有效率,技术革命不断被更新和迭代,也催生全新的服务和公司。现在,随着超专业化的趋势在互联网上的蔓延,API经济本身已成为一个巨大的市场,催生了全新的物种公司。随着行业的专家都开始纷纷支持API,关于API经济的逐渐进入人们的视野,人们讨论了很多。但究竟出现了什么?什么类型的企业在这个新的生态系统中处于领先地位,他们到底贡献了什么工具或服务?我们通过分类来了解不断增长的行业,尽可能的来识别新的物种——那些诞生于API世界的新公原创 2022-09-06 09:37:14 · 586 阅读 · 0 评论 -
Linux系统常用命令总结,建议收藏
1.cat + 文件名的作用是什么?把文件的所有内容在一页内显示出来。如果文件内容过大,不利于查看。2.cd ~命令的作用是什么?回到当前用户的家目录3.head -n 文件名 的作用是什么?输出文件的前n行,如果不加n参数,默认是输出10行。4.less+文件名的作用是什么?可以来回分屏,上下分页的显示文件内容,但是需要注意:因此此命令需要加载文件到内存中,所以文件的大小无比小于机器的内存才可以执行。5.ln命令的作用是什么?硬链接,ln profile abc该命令表原创 2022-09-06 09:17:22 · 248 阅读 · 0 评论 -
IO很复杂?那是你没有吃透本质
初学者觉得复杂是很正常的,归根结底是因为没有理解JavaIO框架的设计思想:可以沿着这条路想一想:1,学IO流之前,我们写的程序,都是在内存里自己跟自己玩。比如,你声明个变量,创建个数组,创建个集合,写一个排序算法,模拟一个链表,使用一些常用API,现在回想一下,是不是在只是自己在内存里玩一玩?计算机组成包括运算器,控制器,存储器,输入设备,输出设备。那么你前面的工作,仅仅够你的程序和内存以及CPU打打交道,如果你需要操作外部设备呢?比如键盘,显示器,再比如,最常见的外设:硬盘?甚至未来世界原创 2022-09-04 11:14:57 · 134 阅读 · 0 评论 -
Eclipse和IDEA你更推荐哪个?12个提升代码效率的IDEA插件推荐
说实话,我刚开始做程序员的时候用的就是Eclipse做开发。后来,到了新公司,看到公司的同事都在用IDEA,然后我也开始用起来。刚开始,还有点不习惯,后面越用越喜欢,真的爱不释手。IDEA的功能真的太强大了。前言基本上每个程序员都会写代码,但写代码的速度不尽相同。为什么有些人,一天只能写几百行代码?而有些人,一天可以写几千行代码?有没有办法,可以提升开发效率,在相同的时间内,写出更多的代码呢?今天我跟大家一起聊聊在idea中,能提升编码效率的12种插件,希望对大家有所帮助。原创 2022-09-04 09:46:44 · 885 阅读 · 0 评论 -
废除闰秒真的有必要吗?不废除会有哪些影响?
要了解闰秒,首先需要了解几个基本的概念。平均太阳日:天空中的太阳连续两次出现最大仰角(90度)所经历的时间就是一个太阳日,而又由于太阳日的长短不同,所以取一年内的太阳日平均值,所以可以大致的认为一个平均太阳日就是一天24小时。UTC:英文为Coordinated Universal Time,中文叫做协调世界时或者世界标准时间,相信开发的同学都很清楚,他是世界上调节时钟和时间的主要时间标准,也是最接近格林威治标准时间GMT的时间系统之一。原创 2022-09-03 10:31:32 · 267 阅读 · 0 评论 -
Java 传参时,如何做到两个 String 实参的实际值交换?
其实是可以做到的。用反射就能行。void test() { String yesA = "a"; String yesB = "b"; swap(yesA, yesB); System.out.println("输出" + yesA + yesB);}void swap(String yesA, String yesB) { char[] temp = yesA.toCharArray(); Field value = String.class.getDecl原创 2022-09-02 08:57:20 · 576 阅读 · 1 评论 -
Java基础二十五:模块化的使用、模块服务的使用
模块化1、模块的基本使用(jdk1.9后以的新特性)注:模块化主要解决一个模块想要访问另外一个模块下的类的问题2、模块服务的使用注:服务使用者,只需要面向接口编程 服务提供者,只需要提供具体的实现类...原创 2022-08-17 08:11:30 · 273 阅读 · 0 评论 -
Java基础二十四:类加载器,反射获取构造方法、成员变量、成员方法及相关案例练习
反射1、类加载基础知识2、类加载器//类加载器基础知识public classClassLoaderDemo1{ public static voidmain(String[]args) { //获取委派的系统类加载器 ClassLoader systemClassLoader=ClassLoader.getSystemClassLoader(); System.out.println(systemClassLo......原创 2022-08-16 08:19:16 · 339 阅读 · 0 评论 -
Java基础二十三:Stream流基本使用和三种生成方式,Stream流常见中间操作方式、常见终结操作方式,Stream流案例练习,Stream流的收集操作
Stream流1、Stream流的基本使用//Stream基本使用public classStreamDemo1{ public static voidmain(String[]args) { /* //创建集合,存储多个元素 ArrayList<String> al = new ArrayList<String>(); al.add("上海市"); al.add("北京市"); al....原创 2022-08-15 13:47:30 · 919 阅读 · 0 评论 -
Java基础二十二:函数式接口介绍,函数式接口作为方法参数、返回值,Supplier接口、Consumer接口、Predicate接口、Function接口基本介绍及其案例小练习
函数式接口1、函数式接口概念及基本使用1、函数式接口:有且仅有一个抽象方法的接口,函数式接口就是Lambda表达式使用的前提2、Java中的函数式编程体现的就是Lambda表达式,所以函数式接口就是可以适用于Lambda使用的接口, 只有确保接口中有且仅有一个抽象方法,Java中的Lambda才能顺利地进行推导注:@FunctionalInterface 在接口上加上这个注解就表达该接口是函数式接口public classMyInterfaceDemo{ public...原创 2022-08-09 08:41:14 · 1171 阅读 · 0 评论 -
Java基础二十一:JDK新特性之接口中的默认方法、静态方法、私有方法,方法的引用之方法引用符、引用类方法、引用对象与类的实例方法、引用构造器
JDK新特性1.接口组成:常量 public static final 抽象方法 public abstract2.默认方法:Java83.静态方法:Java84.私有方法:Java91、接口中的默认方法1. 格式:public default 返回值类型 方法名(参数列表){ }2. 范例:public default void Show3(){ }注意事项:1. 默认方法不是抽象方法,所以不能强制被重写,但是...原创 2022-08-08 08:55:53 · 644 阅读 · 0 评论 -
Java基础二十:Lambda表达式与匿名内部类的区别
Lambda表达式与匿名内部类的区别注:使用Lambda表达式必须是接口,并且接口中有且仅有一个抽象方法1.匿名内部类调用方法时,方法参数可以是接口、抽象类、具体类2.Lambda表达式只能调用接口,不能调用抽象类、具体类3.接口中有多个方法时,可以使用匿名内部类调用,不能使用Lambda表达式调用4.实现原理:匿名内部类编译后,会产生一个单独的.class字节码文件Lambda表达式编译后,是没有一个单独的字节码文件public classLambdaDemo{...原创 2022-08-05 06:13:16 · 305 阅读 · 0 评论 -
Java基础十九:Lambda表达式的方式启动一个线程,Lambda表达式三要素、省略模式、以及注意事项,Lambda三个小练习
Lambda表达式1、Lambda表达式的方式启动一个线程public classMyRunnableimplementsRunnable{ @Override public voidrun() { System.out.println("线程启动了!"); }}//Lambda基本使用public classLambdaDemo1{ public static voidmain(String[]args) { //...原创 2022-08-04 07:06:08 · 2144 阅读 · 0 评论 -
Java基础十八:TCP发送数据、TCP接收数据、TCP通信6个案例练习
7、TCP通信程序注:java为客户端提供了Socket类,为服务器端提供了ServerSocket类8、TCP发送数据TCP发送数据步骤:1、创建客户端的Socket对象(Socket)2、获取输出流,写数据3、释放资源//TCP发送数据: 需要进行三次握手,所以单独一个发送数据是不会成功的public classClientDemo1{ public static voidmain(String[]args)throwsIOException{ ...原创 2022-08-03 09:21:52 · 1783 阅读 · 0 评论 -
Java基础十七:网络编程入门InetAddress类、端口与协议、UDP通信程序、UDP接收数据、UDP通信程序练习
网络编程入门网络编程三要素:IP地址、端口、协议(UDP协议、TCP协议)IP地址:是网络中设备的唯一标识IP地址分两大类:IPV4、IPV6ipconfig: 查看本机IP地址Ping IP地址: 检查网络是否连通127.0.0.1:是回送地址,可以代表本机地址,一般用来测试1、InetAddress类InetAddress: 此类表示Internet协议(IP)地址,三个常用方法:如下1、Static InetAddress getByName(String hos.原创 2022-08-02 07:03:25 · 221 阅读 · 0 评论 -
Java基础知识十六:同步代码块、同步方法、线程同步、LOCK锁、生产者与消费者
7、卖票案例:同步代码块1、锁多条语句操作共享数据,可以使用同步代码块实现格式: synchronized(任意对象){多条语句操作共享数据的代码}2、synchronized(任意对象):就相当于给代码加锁了,任意对象就可以看成是一把锁优点:解决多线程的数据安全问题缺点:当线程很多时,因为每个线程都会去判断同步上的锁,这是很耗费资源的,无形中会降低程序的运行效率/*卖票案例* 需求:某电影院有100张票,三个窗口卖票,设计一个程序模拟该电影院卖票* 思路:* 1.定.原创 2022-07-28 09:12:46 · 259 阅读 · 0 评论 -
Java基础知识十五:Thread多线程两种实现方式,设置和获取线程名称,两种线程调度模型、线程控制三种方式、线程生命周期
Thread1、多线程的实现方式1方式一:继承Thread类1、定义一个类MyThread继承Thread2、在MyThread类中重写run()方法3、创建MyThread类的对象4、启动线程注:void start() 导致此线程开始执行,java虚拟机调用此线程的run()方法两个小问题:1、为什么要重写run()方法? 因为run()方法是用来封装被线程执行的代码2、run()与start()的区别?区别1:run()封装线程执行的代码,直接调用,相当..原创 2022-07-27 06:22:07 · 369 阅读 · 0 评论 -
Java基础知识十四:标准输入与输出流,字节与字符打引流,复制文件,对象序列化与反序列化流及其两个问题,Properties集合
特殊操作流1、标准输入流System类中有两个静态的成员变量:1、public static final InputStream in: 标准输入流,通常该流对应于键盘输入或由主机环境或用户指定的另一个输入源2、public static final PrintStream out: 标准输出流,通常该流对应于显示输出或由主机环境或用户指定的另一个输出目标3、自己实现键盘录入数据:BufferedReader br = new BufferedReader(new inputStr...原创 2022-07-26 06:04:22 · 372 阅读 · 0 评论 -
Java基础知识十三:IO流总结与几个案例练习
21、IO流小结IO流练习1、集合到文件案例//案例一:把ArrayList集合中的字符串数据写入文本文件//要求:每一个字符串元素作为文件中的一行数据/*思路:1、创建ArrayList集合2、往集合中存储字符串元素3、创建字符缓冲输出流对象4、遍历集合,得到每一个字符串数据5、调用字符缓冲输出流对的方法写数据6、释放资源* */public classArrayListToTxtDemo1{ public static voidmain(Str...原创 2022-07-25 21:30:21 · 363 阅读 · 0 评论 -
Java基础知识十二:字节输入流OutputStreamReader,字符缓冲流输入输出流BufferedWtiger与BufferedReader
OutputStreamReader: 字符输出流//字符输入流、输出流编码与解码public classOutAndInpuStreamDemo2{ public static voidmain(String[]args)throwsIOException{ //字符输出流写数据,默认编码格式utf-8 OutputStreamWriter osw=newOutputStreamWriter(newFileOutputStream("f:\\t...原创 2022-07-24 09:49:47 · 1678 阅读 · 0 评论 -
Java基础知识十一:FileInputStream字节输入流读取、文件复制、读取字节数组、复制图片案例,字节缓冲流介绍、复制视频案例,字符串编码与解码
FileInputStream:字节输入流读取注意:字节输入流,到-1就是文件内容的末尾//FileInputStream字节输入流读取public classFileInputStreamDemo5{ public static voidmain(String[]args)throwsIOException{ FileInputStream fis=newFileInputStream("f:\\test\\ps.txt"); /*fi...原创 2022-07-23 11:19:21 · 2357 阅读 · 0 评论 -
Java基础知识十:File类及常用方法、递归、IO流介绍、字节流、字符流、IO流异常处理、
File类1、File类的3个构造方法//File三个构造方法//实现的效果是一样的,推荐第一种public classfileDemo1{ public static voidmain(String[]args) { File f1 =newFile("d\\IDEA\\bin\\log.xml"); System.out.println(f1); File f2 =newFile("d\\IDEA\\bin","log...原创 2022-07-22 05:50:53 · 144 阅读 · 0 评论 -
Java基础知识九:Map集合基本介绍、Map集合put()方法、获取Map集合键值元素3种方式,HashMap集合讲解与案例分析,Collections常用3个方法与对ArrayList集合进行排序
Map集合1、Map集合:添加方法:put( )//Map的基本使用public classmapDemo1{ public static voidmain(String[]args) { //Map集合中键、值对应 //put()方法添加元素 // 键有重复时,put()方法会把后面的值替换前面的值 Map<String,String>map=newHashMap<>(); ...原创 2022-07-21 08:09:26 · 7348 阅读 · 0 评论 -
Java基础知识八:Set集合介绍、HashSet、LinkedHashSet、TreeSet、泛型介绍、泛型类、泛型方法、泛型接口、类通配符、可变参数及常用方法
Set集合1、Set集合基本介绍Set集合 :是一个不包含重复元素的集合Set集合特点:没有带索引的方法,所以不能使用普通for循环进行遍历HasSet:对集合的跌代顺序不做任何保证哈希值:用HasCode()方法获取,同一个对象多次调用该方法获取的值是一样的注意:1. 默认情况下,不同对象的哈希值是不同的2.通过方法重写,可以实现不同对象的哈希值是相同的2、HahSet案例:遍历学生对象元素3、LinkedHashSet讲解与案例1...原创 2022-07-20 07:12:33 · 284 阅读 · 0 评论