集合进阶指南:从基础知识到高级应用

集合高级

Collection集合

数组和集合的区别

相同点

都是容器,可以存储多个数据

不同点
  • 数组的长度是不可变的,集合的长度是可变的
  • 数组可以存储基本数据类型和引用数据类型

集合只能存储引用数据类型,如果要存基本数据类型,需要存对应的包装类

集合类体系结构

在这里插入图片描述

Collection集合概述和使用

Collection集合概述
  • 是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素
  • JDK不提供此接口的任何实现,它提供更具体的子接口(如Set和List)实现
创建Collection集合的对象
  • 多态的实现
  • 集体的实现类
Collection集合常用方法
方法名说明
boolean add(E e)添加元素
boolean remove(Object o)从集合中移除指定的元素
boolean removelf(Object o)根据条件进行移除
void clear()清空集合中的所有元素
boolean contains(Object o)判断集合中是否存在指定的元素
boolean isEmpty()判断集合是否为空
int size()集合的长度,也就是集合中元素的个数

Collection集合的遍历

迭代器
  • 迭代器,集合的专用遍历方式
  • Iterator();
  • < E >iterator(); 返回此集合中元素的迭代器,通过集合对象的iterator()方法得到
Iterator中的常用方法
方法名说明
boolean hasNext();判断当前位置是否有元素可以被取出
E next();获取当前位置的元素, 将迭代器对象移向下一个索引位置
集合的遍历
public class IteratorDemo1 {public static void main(String[] args) {//创建集合对象Collection<String> c = new ArrayList<>();//添加元素c.add("hello");c.add("world");c.add("java");c.add("javaee");//Iterator<E> iterator():返回此集合中元素的迭代器,通过集合的iterator()方法得到Iterator<String> it = c.iterator();//用while循环改进元素的判断和获取while (it.hasNext()) {String s = it.next();System.out.println(s);}}
}
迭代器中删除的方法

void remove(); 删除迭代器对象当前指向的元素

public class IteratorDemo2 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("a");list.add("b");list.add("b");list.add("c");list.add("d");Iterator<String> it = list.iterator();while(it.hasNext()){String s = it.next();if("b".equals(s)){//指向谁,那么此时就删除谁.it.remove();}}System.out.println(list);}
}

List集合

概述
  • 有序集合,这里的有序指存取顺序
  • 用户可以精准控制列表中每个元素的插入位置,用户可以通过整数索引访问元素,并搜索列表中的元素
  • 与Set集合不同,列表通常允许重复元素
List集合的特点
  • 存取有序
  • 可以重复
  • 有索引
特有方法
方法名说明
void add(int index, E element)在此集合中的指定位置插入指定的元素
E remove(int index)删除指定索引处的元素,返回被删除的元素
E set(int index,E element)修改指定索引处的元素,返回被修改的元素
E get(int index)返回指定索引处的元素

数据结构

栈结构

先进后出

队列机构

先进先出

数据结构之数组和链表

数组结构

查询快, 增删慢

队列结构

查询慢,增删快

List集合的实现类

List集合子类的特点

ArrayList集合

底层是数组结构实现,查询快,增删慢

LinkedList集合

底层是链表结构实现,查询慢,增删快

LinkedList集合的特有功能
方法名说明
public void addFirst(E e)在该集合开头插入指定元素
public void addLast(E e)将指定的元素追加到此列表的末尾
public E getFirst()返回此列表中的第一个元素
public E getLast()返回此列表中的最后一个元素
public E removeFirst()从此列表中删除并返回第一个元素
public E removeLast()从此列表中删除并返回最后一个元素

Set集合

概述和特点
  • 不可以储存重复元素
  • 没有索引,不能使用普通for循环遍历

TreeSet集合

特点
  • 不可以存储重复元素
  • 没有索引
  • 可以将元素按照规则进行排序
  1. TreeSet(); 根据其元素的自然排序进行排序
  2. TreeSet(Comparator comparator); 根据指定的比较器进行排序

HashSet集合

概述与特点
  • 底层数据结构是哈希表
  • 存取无序
  • 不可以储存重复元素
  • 没有索引,不能使用普通for循环遍历

哈希值

简介

是JDk根据对象的地址或者字符串或者数字算出来的int类型的数值

如何获取哈希值

Object类中的public int hashCode(); 返回对象的哈希码值

哈希值的特点
  • 同一个对象多次调用hashCode()方法返回的哈希值是相同的
  • 默认情况下,不同对象的哈希值是不同的. 而重写hashCode()方法,可以实现让不同对象的哈希值相同

总结:

hashSet集合储存自定义类型的元素,想要实现元素的唯一,要求必须重写hashCode方法和equals方法

Map集合

概述

interface Map<K,V> K:键的类型;V:值的类型

特点
  • 双列集合, 一个键对应一个值
  • 键不可以重复,值可以重复
常用方法
方法名说明
V put(K key, V value)添加元素
V remove(Object key)根据键删除键值对元素
void clear()移除所有的键值对元素
boolean containsKey(Object key)判断集合是否包含指定的键
boolean containsValue(Object value)判断集合是否包含指定的值
boolean isEmpty()判断集合是否为空
int size()集合的长度,也就是集合中键值对的个数
Map集合的获取功能
方法名说明
V get(Object key)根据键获取值
Set< K > keySet()获取所有键的集合
Collection< V > values()获取所有值的集合
Set< Map.Entry< K,V > > entrySet获取所有键值对对象的集合

HashMap集合

概述和特点
  • HashMap底层是哈希表结构的
  • 依赖hashCode方法和equals方法保证键的唯一
  • 如果键要存储的是自定义对象,需要重写hashCode和equals方法

TreeMap集合

概述和特点
  • TreeMap底层是红黑树结构
  • 依赖自然排序或者比较器排序,对键进行排序
  • 如果键存储的是自定义对象,需要实现Comparable接口或者在创建TreeMap对象时候给出比较器排序规则

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/204978.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

家政预约小程序带商城,图文详解

家政预约小程序开发&#xff0c;在线选择服务分类&#xff0c;选择上门时间&#xff0c;提交订单&#xff0c;在线支付。 商城模块&#xff1a;商品分类&#xff0c;在线下单支付。 个人中心&#xff1a;订单管理&#xff08;家政订单&#xff0c;搬家订单&#xff0c;商品订…

antdesign前端一直加载不出来

antdesign前端一直加载不出来 报错&#xff1a;Module “./querystring” does not exist in container. while loading “./querystring” from webpack/container/reference/mf at mf-va_remoteEntry.js:751:11 解决方案&#xff1a;Error: Module “xxx“ does not exist …

肾虚的16个表现,你有吗?

现代研究发现&#xff1a;导致人体衰老的根本原因不是年龄&#xff0c;而是“肾虚”。此外&#xff0c;肾虚不是男人的专利&#xff0c;女人肾虚的危害更大。 一、肾虚的16个表现 1、总感觉口咸 我们的五味&#xff08;酸苦甘辛咸&#xff09;跟我们的脏腑是相对应的&#xf…

软件设计之装饰模式

装饰模式把每个要装饰的功能放在单独的类中&#xff0c;并让这个类包装它所要装饰的对象&#xff0c;因此&#xff0c;当需要执行特殊行为时&#xff0c;客户代码就可以在运行时根据需要有选择地、按顺序地使用装饰功能包装对象。 案例&#xff1a;穿搭。衣柜有帽子、眼镜、…

由于找不到xinput1_3.dll,无法继续执行代码的多种解决方法指南,xinput1_3.dll文件修复

当玩家或用户在启动某些游戏和应用程序时&#xff0c;可能会遭遇到一个系统错误提示&#xff1a;“由于找不到xinput1_3.dll,无法继续执行代码l”。这种情况通常指出系统中DirectX组件存在问题。以下我们将介绍几种常用的解决方法&#xff0c;并提供详细的操作步骤。 一.找不到…

qt-C++笔记之点击按钮弹出文件资源管理器选择文件后把文件路径赋值给一个QString

qt-C笔记之点击按钮弹出文件资源管理器选择文件后把文件路径赋值给一个QString code review! 文章目录 qt-C笔记之点击按钮弹出文件资源管理器选择文件后把文件路径赋值给一个QString1.运行2.main.cpp3.qt_FileDialog.pro4.QFileDialog类详解 1.运行 2.main.cpp 代码 #inclu…

Day16——网络编程

1.网络编程 Java 提供的网络类库&#xff0c;可以实现无痛的网络连接&#xff0c;联网的底层细节被隐藏在Java 的本机安装系统里&#xff0c;由 JVM 进行控制。并且 Java 实现了一个跨平台的网络库&#xff0c;程序员面对的是一个统一的网络编程环境。 1.1 InetAddress类 In…

自己搭建一个window系统上的MinIO系统(小白30分钟搞得版)

自己搭建一个window系统上的MinIO系统 前言实现系统说明 效果配置结果测试本地测试同一网络内的其他计算机访问 展望注参考链接 前言 有个项目使用到minio的云端存储系统&#xff0c;为了更好的理解项目&#xff0c;准备对这个“神秘的玩意”自己研究一下&#xff0c;看看到底…

【Angular开发】Angular:2023年最佳实践

Angular是一个功能强大且被广泛采用的用于构建web应用程序的框架。随着我们进入2023年&#xff0c;必须跟上最佳实践&#xff0c;以确保您的Angular项目高效、可维护和高性能。在本文中&#xff0c;我们将探讨2023年充分利用Angular的一些最佳实践&#xff0c;并提供示例。 1.…

【hacker送书第10期】AI时代系列丛书(五选一)

AI时代系列丛书 AI时代程序员开发之道✨内容简介参与方式 AI时代项目经理成长之道✨内容简介参与方式 AI时代架构师修炼之道✨内容简介参与方式 AI时代产品经理升级之道✨内容简介参与方式 AI时代Python量化交易实战✨内容简介参与方式 AI时代程序员开发之道✨ 内容简介 本书是…

vivado时序方法检查5

TIMING-14 &#xff1a; 时钟树上的 LUT 在时钟树上发现 LUT <cell_name> 。不建议在时钟路径上包含 LUT 单元。 描述 时钟路径上的 LUT 可能导致偏差过大 &#xff0c; 因为时钟必须在穿过互连结构的常规布线资源上进行布线。除偏差过大外 &#xff0c; 这些路径更…

Nmap脚本简介

什么是Nmap脚本 Nmap脚本是一种由Nmap扫描器使用的脚本语言&#xff0c;用于扫描目标网络中的主机、端口、服务等信息&#xff0c;并提供一系列自动化的测试和攻击功能。从渗透测试工程师的角度来看&#xff0c;Nmap脚本是一种非常有用的工具&#xff0c;能够帮助渗透测试工程师…

LinuxBasicsForHackers笔记 -- 进程管理

进程是一个正在运行和使用资源的程序。 Linux 内核是操作系统的内核&#xff0c;几乎控制着一切&#xff0c;在创建进程时&#xff0c;它会按顺序为每个进程分配一个唯一的进程 ID (PID)。 查看进程 ps – 用于在命令行查看哪些进程处于活动状态。单独使用 ps 命令并不能真正…

Spring基于注解存储对象

小王学习录 前言基于注解存储对象Controller (控制器存储)Service (服务存储)Repository (仓库存储)Component (组件存储)Configuration (配置存储)Bean(方法注解) 前言 上一篇文章中已经介绍了在Spring中存储Bean和取Bean的方法. 而在 Spring 中想要更简单的存储和读取对象的…

利用 Python 进行数据分析实验(七)

一、实验目的 使用Python解决问题 二、实验要求 自主编写并运行代码&#xff0c;按照模板要求撰写实验报告 三、实验步骤 操作书上第九章内容请画出如图2.png所示的图形通过编码获得fcity.jpg的手绘图像&#xff08;如beijing.jpg所示&#xff09; 四、实验结果 T2 &qu…

仿贝壳地图画圈找房功能实现(高德地图)

仿贝壳地图画圈找房功能实现&#xff08;高德地图&#xff09; 前言 在最近租房时&#xff0c;看到贝壳找房上线了一个地图画圈找房的功能&#xff0c;感觉很是新奇。接触地图开发也有很长一段时间了&#xff0c;以前大部分都是基于web pc端开发&#xff0c;所以一般遇到这种…

嵌入式板级系统设计【课设】

笔记【嵌入式板级系统设计】 前言版权笔记【嵌入式板级系统设计】资料学习面包板焊接注意焊接教程 焊接电路板基础代码GPIO 外部中断 定时中断 三合一串口 综合实验 风扇控制系统下板三合一窗口综合实验 最后 前言 2023-11-20 08:49:57 以下内容源自《【创作模板五】》 仅供学…

基于Java影视明星系统

基于Java影视明星系统 功能需求 1、明星信息管理&#xff1a;系统需要提供明星信息的录入、编辑、查询和删除功能。每个明星的信息应包括姓名、照片、简介、代表作品等。 2、粉丝互动&#xff1a;系统需要提供粉丝与明星互动的功能&#xff0c;如粉丝关注、评论、点赞等。明…

blender的weight paint模式

Blender 的权重绘制模式下的 Draw 、Blur、Average 和 Smear 工具。&#x1f60a; - Draw 工具可以在网格上绘制指定的权重值。权重值是一个从 0 到 1 的数字&#xff0c;表示顶点对顶点组的影响程度。权重值越高&#xff0c;顶点的颜色越红&#xff0c;权重值越低&#xff0c…