简谈集合框架

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

相关文章

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

C#之List集合去重复对象的实现方法

《C#之List集合去重复对象的实现方法》:本文主要介绍C#之List集合去重复对象的实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C# List集合去重复对象方法1、测试数据2、测试数据3、知识点补充总结C# List集合去重复对象方法1、测试数据

C++ HTTP框架推荐(特点及优势)

《C++HTTP框架推荐(特点及优势)》:本文主要介绍C++HTTP框架推荐的相关资料,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Crow2. Drogon3. Pistache4. cpp-httplib5. Beast (Boos

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2

Spring框架中@Lazy延迟加载原理和使用详解

《Spring框架中@Lazy延迟加载原理和使用详解》:本文主要介绍Spring框架中@Lazy延迟加载原理和使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、@Lazy延迟加载原理1.延迟加载原理1.1 @Lazy三种配置方法1.2 @Component

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 应