news 2026/5/17 1:52:53

Java学习日记——DAY14

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java学习日记——DAY14

今天学习的内容还是集合类相关的知识:

1.Map接口,存储的数据类型是键值对的形式的,并不是Collections的子接口,是一个顶层接口;

2.HashMap:

是Map的实现类,底层数据结构是哈希表,特性:无序性,key唯一性,value不唯一性。

如果添加了重复的key,则该key值的value会被后添加的value覆盖;

默认初始大小为16,负载因子大小为0.75;

常用方法:

put(e):添加元素;

get(key):获取key对应的value值;

containsKey/Value():返回boolean类型,判断是否存在指定Key/Value;

remove(key):按照Key值来移除元素;

remove(Key,Value):按照Key值和value值来移除元素;

size():返回有效元素个数;

isEmpty():判断集合是否为空;

putAll(Map):将指定Map中的所有元素都添加到当前集合中;

replace(Key,Value):将Key的Value值改为新的;

遍历循环方式:

(1)set <String> keys = map.keyset();

for(String key:keys){

System.out.println(key+Map.get(key));

}

(2)Set<Map.Entry<String,Integers>> entries = Map.entrySet();

for(Map.Entry<String,Integers> entry:entries){

System.out.println(entry.getKey()+entry.getValue);

}

推荐使用第二种遍历方式,第一种遍历方式是将所有的key存在一个集合中,每次需要访问时都还需要拿着key去Map里面找。而第二种方式则是直接把所有的key和value存在一个集合中,需要时直接访问集合就好了;

3.LinkedHushMap:继承与HushMap,和LinkedHushSet相似底层不止维护了一个哈希表(数组+链表)还维护了一个了链表来保证访问时的次序;

特性:有序性,Key唯一性,Value不唯一性;

4.TreeMap

底层是树结构,不管放入的顺序会按照key的值默认升序排列;

5.HushTable

和HashMap的区别:

(1)都是实现Map接口;

(2)HushTable是基于陈旧的Dictionary类的;

(3)HushTable是线程安全的,HushMap是非线程安全的,但是HushMap可以使用Collections的工具来实现线程安全;

(4)HushMap可以将null作为key或value,而HushTable不可以会报异常;

(5)HushMap的初始大小是16,HushTable初始大小是11,负载因子都是0.75;

(6)扩容时HushMap是每次*2,而HushTable是每次*2+1;

(7)HushMap的底层数据结构是:数组+链表+红黑树(在链表长度超过8时,将转换为红黑树的结构),而HushTable则是:数组+链表;

(8)计算Hush的方式不同:HushTable使用key的hushCode对数组长度取模得出hush值,而HushMap是使用key的HushCode的HushCode对数组长度取模得出的hush值;

6.Properties:继承与HushTable,主要用于处理属性文件

Properties properties = new Properties(); properties.load(ClassLoader.getSystemResourceAsStream("config.properties")); String username = properties.getProperty("username"); String password = properties.getProperty("password"); System.out.println("Username: " + username); System.out.println("Password: " + password);

其他处理属性文件的方法:

ResourceBundle bundle = ResourceBundle.getBundle("config"); String username = bundle.getString("username"); System.out.println("username = " + username); String password = bundle.getString("password"); System.out.println("password = " + password);

7.Stack类:

底层数据结构是堆栈(FILO),继承于Vector类。

常见方法:

push(e):压栈;

pop():弹栈;

peek():返回栈顶的元素;

search(Object):查找元素位置如果没找到返回-1;

isEmpty():判断栈是否为空;

8.队列Queue:底层数据结构是队列(FIFO),是一个接口,有两套实现基本操作的方法:

抛出异常的:

add(e);

remove();

element();

返回false或null的:

offer(e);

poll();

peek();

9.Dequeue:继承于Queue底层数据结构是双向队列,也是一个接口,可以先进先出也可以后进先出,支持所有元素在尾部或头部进行入队或出队;

同样Dequeue也有两套实现基本操作的方法:

抛出异常的:

addFirst(e);

removeFirst();

getFirst();

addLast(e);

removeLast();

getLast();

抛出false和null的:

offerFirst(e);

offerLast(e);

pollFirst();

pollLast();

peekFirst();

peekLast();

在使用栈结构时推荐使用的是Dequeue而不是stack,理由如下:

(1)面向接口编程可以隐藏实现细节;

(2)Stack继承于Vector线程安全;

学习内容如上,如有不对欢迎批评斧正。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 15:17:23

41、WPF 3D 支持与导航应用开发全解析

WPF 3D 支持与导航应用开发全解析 1. WPF 3D 支持概述 WPF 的 3D 支持虽然我们只是浅尝辄止,但已能对其能力范围和入门方法有一个基本了解。对于经典 3D 应用而言,WPF 的 3D 支持相当不错。若有需求,在 WPF 中实现标准图元甚至构建光线追踪引擎都并非难事,而且预计不久的…

作者头像 李华
网站建设 2026/5/11 22:24:29

LLM 本地化部署保姆级指南:零基础也能搞定模型微调与性能优化

在大语言模型&#xff08;LLM&#xff09;普及的当下&#xff0c;云端调用 API 虽便捷&#xff0c;却受限于网络延迟、数据隐私和调用成本&#xff0c;而 LLM 本地化部署能完美解决这些问题。很多人觉得本地化部署需要深厚的编程功底&#xff0c;实则如今各类可视化工具、一键式…

作者头像 李华
网站建设 2026/4/27 9:37:59

9、Windows应用开发:魅力功能与实时磁贴实现指南

Windows应用开发:魅力功能与实时磁贴实现指南 1. Callisto工具包功能概述 Callisto工具包提供了丰富的功能,以下是其可用的控件、转换器、扩展和帮助程序的详细列表: | 分类 | 具体功能 | | — | — | | 控件 | Flyout、Menu、SettingsFlyout、LiveTile、Rating、FlipV…

作者头像 李华
网站建设 2026/5/11 10:51:42

Redis防重复点击与分布式锁实现方案对比笔记

一、核心概念辨析 1.1 业务场景本质 场景核心需求正确类比防重复点击设置临时冷却标记&#xff0c;N秒内禁止重复操作计时器&#xff08;N秒后自动解除&#xff09;分布式锁排他性资源访问&#xff0c;同一时间只允许一个线程操作互斥信号量&#xff08;手动释放&#xff09;…

作者头像 李华
网站建设 2026/5/7 16:41:51

Redis防重复点击与分布式锁

在生产环境中&#xff0c;我们经常会遇到两个需求&#xff1a;限制用户在N秒内不能重复操作&#xff08;如连续点击导出按钮&#xff09;确保同一时间只有一个线程能操作共享资源&#xff08;如扣减库存&#xff09;很多开发者习惯用Redisson的RLock来解决这两个问题&#xff0…

作者头像 李华
网站建设 2026/5/16 1:16:08

亲测2025年主流AI漫剧工具:帮作者打通小说转漫剧链路

我是一名写了十多年网文的作家&#xff0c;今年打算尝试一下小说转漫剧&#xff0c;一段时间下来&#xff0c;我可真的懂文字转化为漫剧的痛了。分镜的逻辑太混乱了&#xff0c;画风和人设也不匹配&#xff0c;手动来回调整场景花费的时间太长&#xff0c;尤其是我把小说《古今…

作者头像 李华