简谈集合框架

2024-04-21 14:48
文章标签 框架 集合 简谈

本文主要是介绍简谈集合框架,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简谈集合框架(一)

灵活思考,学会类比,举一反三,方能学好知识,成就精彩人生。

**

首先,对于集合框架这一大的概念,我们肯定也是有点模糊的,因此此次,我从集合框架的简介,Collection方法,迭代器三个方面入手,层层分析,一一破解。

简介

集合框架的由来:数据多了用对象进行存储,对象多了用集合来进行存储。

而存储数据的方式(数据结构)各有不同,所以存储的容器也就有多种,从而形成了集合框架这一体系。

而其中的部分数据结构如下:

在这里插入图片描述
通过此图可知,研究集合框架,一部分框架是由list组成,一部分是由set构成,当然还有一部分在此文没有提到,在以后会补充。
观察此图,我们可以把list比作盛水的容器,把set比作放糖果的盒子,然后我们就可以观察出,它们都有一个共性,就是存储Collection
之后,我们便从这一点共性下手研究(打蛇打七寸,有了明确方向,才能达到事半功倍效果)

Collection方法

Collection方法,可以通过我下面推荐的这个网站去探讨,钻研。Api在线学习文档

迭代器

啥叫迭代器?
集合框架中提供了一个内部类专门操作集合中的元素,这个内部类就是迭代器
再举一个形象的例子:
把夹娃娃机比作集合;那么夹娃娃的钩子就可以看成集合中的迭代器;夹娃娃必须通过娃娃机内部的钩子;

而钩子的外挂、移动方式等等都不相同,所以只能定义一个规则,而这个规则就可以看成几何内部的一个迭代器接口Iterator;

在这里插入图片描述
在这里,我还想提到的是,在我们钻研某一知识的时候,我们一定不能死板,要学会和生活中的一些现象联系起来,学会类比,我们也可以通过绘图来使我们思路清晰化,这属实是屡试不爽。

集合框架List

在此,本篇会讲到

(ArrayList特有方法、特有迭代器、具体对象特点、增长因子论证)

重点来了 本篇中将涉及

职场面试题

天生我材必有用,人不可貌相,海水不可斗量!

  • 1、list集合相对于collection集合所特有的方法
    • 2、Iterator.remove()与Collection.remove()的区别
    • 3、Iterator与ListIterator的区别

Iterator.remove()与Collection.remove()的区别

面试中我们常常会被问到:看下面代码,我想删除第二个,然后再展示出来,代码这样写对不对?

当然上面的报错代码,是我们后期加上去的,这样写肯定不对!报错显示结果是:数组当前改变异常。
根本原因是:
当所有元素在迭代器里面 用其他方法去操作就会出现并发问题—弄巧成拙—导致报错
所以 要么就只用集合方法操作 要么就用迭代器方法调用
(list集合所特有的迭代器,ListIterator是Iterator的子接口
* 在迭代时,不可以通过集合对象的方法操作集合中的元素;
* 因为会发生并发修改异常(ConcurrentModificationException);
* 所以,在迭代时,只能通过迭代器来操作元素,课时Iterator的方法是有限的,Iterator只提供了判断、
* 取出、删除的操作;
* 如果想要有其他的操作,如添加、修改等,就需要使用其子接口ListIterator,该接口只能list集合的listIterator方法来获取)
下面是正确方法:
在这里插入图片描述

list集合相对于collection集合所特有的方法

讲到这里,我们首先得知道,list特有的东西:独立不同的方法 ;索引list 可以得知 有下标的都是list
特有的方法
因为list有序 有下标(知道位置在哪里了,肯定是清晰的了)
必然会有其特有的迭代器 更多方法 操作。
List:凡是可以操作角标的方法都是该体系所特有的方法
* 增
* Add(index,element)
* Add(index,Collection)
*
* 删
* Remove(index)
*
* 改
* Set(index,element)
*
* 查
* Get(index)
* subList(from,to)
* listIterator()
* index(element)等
在这里插入图片描述
其中特有的方法,我们可以去上面的链接进行研究,扩充我们的知识面。
List 有序 元素可以重复 因为该集合体系有索引
Set 无序 元素不可以重复

Iterator与ListIterator的区别

怎么使用迭代器:(面试题;我想取出它们的偶数部分,代码这样写对不对?)
刚开始使用迭代器的时候,其在最顶上(图中箭头),就当进入循坏的时候,
语句(it.hasnext())刚好符合,且进入下一步(it.next%2==0)也是符合
,因此打印的是第二个,以此类推,打印第四个。所以由图可知打印第2,4个
在这里插入图片描述
因此我们要仔细思考,小心入坑,在我们理解集合的数据结构后,
其万坑不离其综,形变神不变,方能轻松面对,笑傲职场!~

迭代器不管调用什么方法,其顺序都是从上往下

面试题:(怎么让迭代器顺序从下往上)
解决:先让迭代器顺序从上往下打印一遍,
在这里插入图片描述
紧接着调用(itr.hasPrevious())
方法,就可以达到理想效果了。
在这里插入图片描述

Arraylist,vector,Linkedlist特点是什么

面试题(特点是什么)
Arraylist 数组结构 增删慢,查询快 有连续下标 线程不同步 增长因子为1.5 ------------根据下标找 查询肯定块,但插入 删除 要先找到位置 在挪开 影响位置是起
多米诺骨牌效应的,因此速度慢了起来。
在这里插入图片描述
* vector 数组结构 增删改查都慢 有连续下标 线程同步 增长因子2
增长因子可得知arraylist更好 合理空间 没有较多的浪费
* Linkedlist 链表结构 增删快,查询慢 没有连续下标
linkedlist 是链表结构的,相当于该位置(Node node)只要记住前面
(Node previous) 后面(Node next)位置,因此影响小,插入,删除速度快,
但与此同时,查找速度慢。

如何论证增长因子

关于如何论证增长因子,本篇将给出如下代码供大家查阅:
在这里插入图片描述
在这里插入图片描述

如何调优

list集合的调优:增长因子是不是1.5
其次我们可以改变初始容量参数,来进行调优

小伙伴们,本次小t分享的内容就到这里啦,感谢观看!

这篇关于简谈集合框架的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/923344

相关文章

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

Python容器类型之列表/字典/元组/集合方式

《Python容器类型之列表/字典/元组/集合方式》:本文主要介绍Python容器类型之列表/字典/元组/集合方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 列表(List) - 有序可变序列1.1 基本特性1.2 核心操作1.3 应用场景2. 字典(D

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

SpringBoot集成图片验证码框架easy-captcha的详细过程

《SpringBoot集成图片验证码框架easy-captcha的详细过程》本文介绍了如何将Easy-Captcha框架集成到SpringBoot项目中,实现图片验证码功能,Easy-Captcha是... 目录SpringBoot集成图片验证码框架easy-captcha一、引言二、依赖三、代码1. Ea

Gin框架中的GET和POST表单处理的实现

《Gin框架中的GET和POST表单处理的实现》Gin框架提供了简单而强大的机制来处理GET和POST表单提交的数据,通过c.Query、c.PostForm、c.Bind和c.Request.For... 目录一、GET表单处理二、POST表单处理1. 使用c.PostForm获取表单字段:2. 绑定到结

Java集合中的List超详细讲解

《Java集合中的List超详细讲解》本文详细介绍了Java集合框架中的List接口,包括其在集合中的位置、继承体系、常用操作和代码示例,以及不同实现类(如ArrayList、LinkedList和V... 目录一,List的继承体系二,List的常用操作及代码示例1,创建List实例2,增加元素3,访问元

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依