集合 学习

article/2025/9/7 22:30:58

集合 学习

  • 1. 整体框架体系
  • 2. Collection
    • 2.1 Collection 遍历元素方式
      • 2.1.1 使用 Iterator(迭代器)
      • 2.1.2 for 循环增强
    • 2.2 List 接口
      • 2.2.1 遍历方式
      • 2.2.2 ArrayList, Vector 和 LinkedList
    • 2.3 Set
      • 2.3.1 遍历方式
      • 2.3.2 HashSet
  • 3. Map
    • 3.1 Map 特点
    • 3.2 Map 遍历元素方式
      • 3.2.1 利用 Key 值
      • 3.2.2 利用 value (此时只有 value 值)
      • 3.2.3 通过 EntrySet 来获取 k-v
    • 3.3 HashMap 和 HashTable
  • 4. 总结

数组长度必须开始就指定,切增加和删除很麻烦,而 集合可以动态保存任意多个对象,增删很容易。

1. 整体框架体系

Java 的集合类主要分为以下两大类:
在这里插入图片描述

在这里插入图片描述

2. Collection

有的可以重复,有的不可以;还有的是有序的(List), 有些是无序的(Set)

2.1 Collection 遍历元素方式

2.1.1 使用 Iterator(迭代器)

注意: Iterator 仅用于遍历集合,本身不存放对象

Iterator iterator = coll.iterator; // 得到一个集合的迭代器
// hasNext(): 判断是否还有下一个元素。一开始是指向第一个元素之前的
while (iterator.hasNext()) {// next()作用: 1. 下移 2. 将下移以后集合位置上的元素返回System.out.println(iterator.next());
}

2.1.2 for 循环增强

for (Object object: coll) {System.out.println(object);
}

2.2 List 接口

特点:

  1. 有序,可重复
  2. 每个元素都有对应的索引,支持索引
  3. 可以根据序号存取容器中对应的元素
  4. 常用实现类:ArrayList, LinkedList, Vector

2.2.1 遍历方式

除了通用的两种方式以外,还可以用 普通 for 循环

for (int i = 0; i < list.size(); i++) {Object object list.get(i);System.out.println(object);
}

2.2.2 ArrayList, Vector 和 LinkedList

ArrayList, Vector

  1. ArrayList 可以加入多个 null
  2. 是由数组来实现数据存储的
  3. 基本等于 Vector,区别是 ArrayList 线程不安全,Vector线程安全(多线程,需要线程同步安全时建议使用)
    在这里插入图片描述

LinkedList

  1. LinkedList 底层实现了双向链表和双端队列
  2. 可以添加任意元素包括 null
  3. 线程不安全,没有实现同步

ArrayList,LinkedList 对比
在这里插入图片描述

  • 选择
    • ArrayList:改查更多
    • LinkedList:增删更多
    • 一般来说查询较多,也就是使用 ArrayList 更多,也有一起用的

2.3 Set

2.3.1 遍历方式

同 Collection 的那两种

2.3.2 HashSet

  1. HashSet 实际上是 HashMap
  2. 可以存放最多一个 null
  3. 无序且不能重复
    实现方式:
    在这里插入图片描述
    扩容细节:
    在这里插入图片描述

3. Map

3.1 Map 特点

  1. Map 与 Collection 并列存在,用于保存具有映射关系的数据:Key-Value
  2. Map 中的 Key 和 value 可以是任何引用类型的数据,会被封装到 HashMap$Node 对象中
  3. Map 中的 key 不允许重复, value 可以重复
  4. key 为 null的只能有一个,value不限制。key 通常是 String
  5. 可以通过 key 找到 value
  6. 在这里插入图片描述

3.2 Map 遍历元素方式

3.2.1 利用 Key 值

Set Keyset = map.keySet(); // 取出所有的 Key
// 1. 增强 for
for (Object key : Keyset) {System.out.println(key + "-" + map.get(key));
}
// 2. 迭代器
Iterator iterator = keyset.iterator();
while (iterator.hasNext()) {Object key = iterator.next();System.out.println(key + "-" + map.get(key));
}

3.2.2 利用 value (此时只有 value 值)

Collection values = map.values(); // 取出所有 value 放入集合
// 1. 增强 for
for (Object value : values) {System.out.println(value);
}
// 2. 迭代器
Iterator iterator = values.iterator();
while (iterator.hasNext()) {Object value = iterator.next();System.out.println(value);
}

3.2.3 通过 EntrySet 来获取 k-v

Set entrySet = map.entrySet();// EntrySet<Map.Entry<K,V>>
//1. 增强 for
for (Object entry : entrySet) {
Map.Entry m = (Map.Entry) entry; // 将 entry 转成 Map.Entry
System.out.println(m.getKey() + "-" + m.getValue());
}
//2. 迭代器
Iterator iterator = entrySet.iterator();
while (iterator.hasNext()) {Object entry = iterator.next();Map.Entry m = (Map.Entry) entry;System.out.println(m.getKey() + "-" + m.getValue());
}

3.3 HashMap 和 HashTable

HashMap 线程不安全, HashTable 线程安全
在这里插入图片描述
Properties 类:可以用于从 xxx.properties 文件中,加载数据到 Properties 类对象,并进行读取和修改

4. 总结

选择什么集合实现类:

  1. 先判断存储的类型是 一组对象 还是 一组键值对
  2. 一组对象[单列]:Collection 接口
    • 允许重复:List
      • 增删多:LinkedList
      • 改查多:ArrayList
    • 不允许重复:Set
      • 无序:HashSet
      • 排序:TreeSet
      • 插入和取出顺序一致:LinkedHashSet
  3. 一组键值对[双列]:Map
    • 键无序:HashMap
    • 键排序:TreeMap
    • 插入和取出顺序一致:LinkedHashMap
    • 读取文件:Properties

http://chatgpt.dhexx.cn/article/ypwMnPsn.shtml

相关文章

如何在英文文献中引用中文文献

如何在英文文献中引用中文文献 在写英文论文甚至某些中文论文时&#xff0c;有时候会引用到国内学者发表的中文文献&#xff0c;但需要将其翻译成英文后再进行引用&#xff0c;可以自行引用&#xff0c;也可以借助文献管理工具&#xff0c;这里只记录一下自行翻译。 如何自行翻…

winform使用本地化,中英文切换

在有些软件中&#xff0c;需要中英文切换的功能&#xff0c;甚至其他语言切换的功能&#xff0c;都可以使用winform自带的本地化功能。一共有2种方法。 第一种方法 1.首先建立一个项目&#xff0c;拖几个控件上去&#xff0c;如图所示。 2.点击Form1的属性&#xff0c;设置以…

基于注意力机制的 中 英机器翻译

数据处理模块 数据介绍 语料介绍一下&#xff1a; data文件夹有如下文件&#xff1a; cn.txt&#xff1a;中文语料&#xff0c;里面的句子都已经分好了词。 en.txt: 英语对齐语料&#xff0c;里面的单词也分词完毕。 cn.text.txt: 中文测试集语料 en.tetx.txt:英语对齐测试…

英文自然语言预处理

目录 1、数据集准备 2、数据集处理 &#xff08;1&#xff09;简单分词、词性还原、停用词过滤 &#xff08;2&#xff09;特征提取&#xff08;TT-IDF、信息增益、卡方检验、互信息、N-Gram等&#xff09; &#xff08;3&#xff09;文本标签向量化 &#xff08;4&…

经验分享 | 英文论文写作工具分享

网站分享 1.Thesaurus 针对英语单词近义词和反义词的询问词汇库&#xff0c;键入一个单词会自动生成多个与之类似的单词&#xff0c;列出各个单词的近义词和反义词。如果论文中太多相同的形容词&#xff08;如important等&#xff09;&#xff0c;就可以通过此网站查找近义词…

英文间隔问题

在中译英的参考文献中&#xff0c;有时候会突然发现英文单词之间间隔不一样&#xff0c;同时还会造成中文间隔不一的问题 需要去段落里面设置一下 点最右下角的箭头 依次点击&#xff0c;勾选允许西文在单词中间换行 完成&#xff01;

集中化监控SQL Server数据库

集中化监控SQL Server数据库 英文原文地址&#xff1a;https://www.simple-talk.com/sql/database-administration/centralize-your-database-monitoring-process/ 名词解释&#xff1a; CMS -- 中央管理服务器&#xff08;Central Management Server&#xff09; MDW -- 管理数…

cntopic库:支持中英文LDA话题分析

cntopic 简单好用的lda话题模型&#xff0c;支持中英文。该库基于gensim和pyLDAvis&#xff0c;实现了lda话题模型及可视化功能。 本文视频讲解已上传到B站(今晚会通过审核)&#xff0c;大家可以关注大邓的 B站账号&#xff1a;大邓和他的python 安装 pip install cntopic使用 …

【英文文本分类实战】之二——数据集挑选与划分

请参考本系列目录&#xff1a;【英文文本分类实战】之一——实战项目总览 下载本实战项目资源&#xff1a;神经网络实现英文文本分类.zip&#xff08;pytorch&#xff09; [1] 数据集平台 在阅读了大量的论文之后&#xff0c;由于每一篇论文都会提出一个模型&#xff0c;十分想…

Window部分软件图标显示不正常

电脑上的软件图标突然就变得不正常显示&#xff0c;网上baidu找了很多&#xff0c;也有很多解决方法&#xff0c;下面记录一种最终解决我问题的方法。 进入到控制面板-显示&#xff0c;将显示比例更改一下&#xff0c;注销电脑&#xff0c;若图标显示正常&#xff0c;再把显示…

电脑软件快捷方式不显示图标

电脑上有的软件快捷方式不显示图标&#xff0c;只显示是图片的样式&#xff0c;图片显示不出来&#xff0c;可能是原图标文件丢失&#xff0c;关联失效&#xff0c;缓存异常等&#xff0c;有时卸载软件重新安装可能会好&#xff0c;有的可能卸载重新安装也解决不了。 以下提供…

2,【electron+vue】 构建桌面应用——常见的功能及问题(修改桌面图标,软件图标,窗口图标,图标不显示问题,影藏默认菜单栏,开机自启,手动或被动关闭应用)

一.修改桌面图标,软件图标或者窗口左上角的图标. 1.首先这些图标必须是 .ico 结尾的图片,如果你将其他格式的图片改成.ico的,也不行哦,至于为什么,我也没深入研究,按着规定来就好. 2.如何获取.ico格式的图片或者说如何将其他格式的图片转换成.ico格式的图片呢,这里推荐一个app…

Win10 底部应用图标显示不正常(空白)

导致此问题一般是因为&#xff1a; 移动了程序目录未正确卸载的情况下重新安装 解决方法 右击任务栏图标&#xff0c;再右键程序&#xff0c;点击属性&#xff0c;更改程序正确位置和图标。

TortoiseSVN文件夹及文件图标不显示解决方法

由于自己的电脑是win7&#xff08;64位&#xff09;的&#xff0c;系统安装TortoiseSVN之后&#xff0c;其他的功能都能正常的使用&#xff0c;但是就是文件夹或文件夹的左下角就是不显示图标&#xff0c;这个问题前一段时间就遇到了&#xff08;那个时候没找到合适的答案&…

解决win10系统下软件图标显示异常的问题

最近遇到的问题&#xff0c;桌面图标&#xff0c;特别是word、excel等office办公软件的桌面图标全部变成txt的图标了&#xff0c;特别是之前安装过WPS软件&#xff0c;更容易出现这个问题。如下图所示&#xff1a; 解决办法&#xff1a; 1.下载软件filetypesman.zip&#x…

win10系统桌面应用图标显示不出来的问题

别慌别慌&#xff0c;只要找到桌面任务栏上右击鼠标&#xff0c;在弹出的菜单中点击【任务管理器】。在【任务管理器】找到【Windows资源管理器】&#xff0c;右击鼠标&#xff0c;选择【重新启动】即可重建图标缓存 CK: https://zhuanlan.zhihu.com/p/121125559

桌面计算机里没有桌面显示不出来怎么办,电脑桌面显示不出来图标 所有软件都可以正常工作 怎么解决?...

苏绯离 回答数&#xff1a;3 | 被采纳数&#xff1a;125 2020-04-18 12:14:50 当你遇到桌面上一个图标都没有的情形时&#xff0c;是由于多种原因引起的&#xff0c;你可按下面方法进行检修。 1、首先右击桌面选排列图标/勾选显示桌面图标。 2、如果故障依旧&#xff0c;打开…

win10某些软件图标显示过小解决方法

win10笔记本电脑分辨率过高&#xff0c;导致某些没有适配win10的软件显示窗口过小&#xff0c;看起来很是不舒服。 本文将介绍一种解决方法&#xff0c;调大显示窗口及图标。 以My Base为例&#xff1a; 1.右键单击图标–>选择“打开文件所在位置” 2.右键单击图标–>…

软件图标显示不正常【win7企业版】

现象&#xff1a; 原因&#xff1a; 图标缓存没有把该软件图标建立起来 解决&#xff1a; 一、 1、找到 IconCache.db 2、你要把电脑隐藏文件打开不然找不到这个文件的&#xff0c;组织—文件夹及搜索选项——查看——显示隐藏文件、文件夹和驱动器 隐藏已知文件的扩展名的√ 去…

解决win10系统桌面应用图标显示不出来的问题

解决win10系统桌面应用图标显示不出来的问题 有时候win10系统桌面应用图标会因为一些原因显示不出来或者显示的不全&#xff08;白色&#xff09;&#xff0c;这时候由于在桌面看的难看&#xff0c;并不好寻找使用的图标。 这里提供一个简单的方法-重置系统图标数据库文件&…