IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> OOP01-08(List+Set+Map+增强for+并发修改异常+集合嵌套+集合自定义对象判断) -> 正文阅读

[数据结构与算法]OOP01-08(List+Set+Map+增强for+并发修改异常+集合嵌套+集合自定义对象判断)

目录

集合概述

ArrayList

ArrayList回顾

增强for循环????????

并发修改异常

LinkedList

Vector简介(了解)

Vector的方法名

Enumeration的方法名

HashSet

Map

Map概念

HashMap基本使用

HashMap遍历

KeySet()

entrySet()

LinkedHashMap

Hashtable(了解)


集合概述

集合:用来保存相同类型数据的容器,除了保存数据,又集成了较多强大功能

我们会在下边的学习过程中,逐个学习以下集合:ArrayList、LinkedList、HashSet、HashMap。
在学习 ArrayList 时,完成对集合基本知识的学习,如增强 for 循环等

ArrayList

ArrayList回顾

ArrayList是开发中最常用的集合
该集合因为使用索引,查找速度极快
用于进行数据存储和数据的获取,遍历

boolean add(元素类型 e)?????????向集合添加元素

boolean add(int index,元素类型 e)????????向指定索引位置添加元素,
该索引 原来元素向后依次推进
注意:该索引必须存在,否则报错
元素越多,添加越慢

int size()????????获取集合长度

元素类型 get(int index)????????根据指定索引获取集合元素,索引号从0开始

元素类型 remove(int index)????????删除某个索引的元素
元素越多,删除越慢

增强for循环????????

实际开发中,由于迭代器操作繁琐,所以最常使用的是foreach循环(又叫增强for循环)来完成元素的获取,增强for循环是完成集合迭代的简化方式

并发修改异常

并发就是同时的意思,好比是一个小门,一个人进门一个人出门,那么他们进出门的行为就是同时进行,我们称为并发。
所以在使用增强 for 时,我们要尽量避免在遍历过程中为集合添加/删除数据

解决方案:
??普通 for: 遍历时,可以进行添加/删除操作。
? 增强 for: 仅仅做遍历,不会在遍历中 添加/删除 集合元素

LinkedList

LinkedList叫做链表

void addFirst(E e)????????向链表的开头插入一个元素,相当于list.add(0,e)

void addLast(E e)????????向链表的尾部插入一个元素,相当于list.add(list.size(),e)

E getFirst()????????从链表中获取第一个元素

E getLast()????????从链表中获取最后一个元素

E removeFirst()????????移除链表中的第一个元素,并返回移除的元素

E removeLast()????????移除链表中的最后一个元素,并返回移除的元素

总结:
需要一次性保存大量数据,经常进行索引遍历数据,推荐使用 ArrayList
需要进行数据频繁的追加和删除,极少使用索引遍历数据,推荐使用 LinkedList

Vector简介(了解)

我们可以将其理解为版本旧的,安全的,效率低的ArrayList

Vector 中提供了一个独特的取出方式,返回 Enumeration。此接口 Enumeration 的功能与 Iterator 接口的功能是类似的。

Vector的方法名

void addElement(E e)????????添加元素,相当于list.add(...)

Enumeration<E> elements()????????获取便利对象Enumeration,相当于迭代器Iterator

Enumeration的方法名

boolean hasMoreElements()????????判断是否有下一个元素,相当于it.hasNext()

E nextElement()????????取下一个元素

子主题 1

HashSet

HashSet集合不能存放重复元素
HashSet 集合不能存放重复元素。
如:
居民身份证号、商品货号等。
注:
HashSet 集合无索引。
HashSet 集合迭代元素的顺序与存储元素的顺序无关

int size()????????返回集合中元素的个数

boolean isEmpty()????????判断集合是否为空

boolean add(E e)????????向集合中添加元素

boolean remove(Object o)????????将指定对象从集合中移除

void cleat()????????清空集合中所有成员

Map

Map概念

Map集合叫做双列集合,没个元素都由“键”,“值”两部分组成
该集合记录的是键值对 对应关系
通过键可以找到对应的值

HashMap基本使用

HashMap 和 HashSet一样,是无序的(展示顺序和存放顺序可能不同)
Map(HashMap)的使用:
创建对象时规定键和值的数据类型

put( K key,V value)????????向集合中添加数据
添加成功,返回null
若键重复,则新值覆盖旧值。将被覆盖的旧值返回

get(Object Key)????????通过指定键 Key 获得值 value
若获取不到,返回null

remove(Object Key)????????移除指定 Key 对应的键值,并返回值

clear()????????清空集合

size()????????集合中键值的个数

isEmpty????????集合是否为空

HashMap遍历

KeySet()

以 Set 集合的方式获取所有键 Key

keySet():【快捷键:变量名.keySet().for】

entrySet()

以 Set 集合的方式获得所有的键值对(Entry 对象)
?Entry 对象方法:
获取键 : getKey()
获取值 : getValue()

方式二:entrySet():【快捷键:变量名.entrySet().for】

LinkedHashMap

LinkedHashMap 是有序 Map 集合

是在 HashMap 的基础上添加了链表结构,通过链表结构可以保证元素的存取顺序一致;

Hashtable(了解)

Hashtable 也是 Map 集合的一种已被 HashMap 取代,在很早的传统项目中会大量见到。其与 HashMap最大的不同:
Hashtable 不支持 null 作为键或值,是安全的。
HashMap 支持 null 作为键或值,是不安全的。
?

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-09-15 02:14:52  更:2022-09-15 02:15:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 21:37:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码