简谈集合框架

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 的ArrayList集合底层实现与最佳实践

《Java的ArrayList集合底层实现与最佳实践》本文主要介绍了Java的ArrayList集合类的核心概念、底层实现、关键成员变量、初始化机制、容量演变、扩容机制、性能分析、核心方法源码解析、... 目录1. 核心概念与底层实现1.1 ArrayList 的本质1.1.1 底层数据结构JDK 1.7

C++中unordered_set哈希集合的实现

《C++中unordered_set哈希集合的实现》std::unordered_set是C++标准库中的无序关联容器,基于哈希表实现,具有元素唯一性和无序性特点,本文就来详细的介绍一下unorder... 目录一、概述二、头文件与命名空间三、常用方法与示例1. 构造与析构2. 迭代器与遍历3. 容量相关4

Redis中的有序集合zset从使用到原理分析

《Redis中的有序集合zset从使用到原理分析》Redis有序集合(zset)是字符串与分值的有序映射,通过跳跃表和哈希表结合实现高效有序性管理,适用于排行榜、延迟队列等场景,其时间复杂度低,内存占... 目录开篇:排行榜背后的秘密一、zset的基本使用1.1 常用命令1.2 Java客户端示例二、zse

Java集合之Iterator迭代器实现代码解析

《Java集合之Iterator迭代器实现代码解析》迭代器Iterator是Java集合框架中的一个核心接口,位于java.util包下,它定义了一种标准的元素访问机制,为各种集合类型提供了一种统一的... 目录一、什么是Iterator二、Iterator的核心方法三、基本使用示例四、Iterator的工

Java JUC并发集合详解之线程安全容器完全攻略

《JavaJUC并发集合详解之线程安全容器完全攻略》Java通过java.util.concurrent(JUC)包提供了一整套线程安全的并发容器,它们不仅是简单的同步包装,更是基于精妙并发算法构建... 目录一、为什么需要JUC并发集合?二、核心并发集合分类与详解三、选型指南:如何选择合适的并发容器?在多

Java 缓存框架 Caffeine 应用场景解析

《Java缓存框架Caffeine应用场景解析》文章介绍Caffeine作为高性能Java本地缓存框架,基于W-TinyLFU算法,支持异步加载、灵活过期策略、内存安全机制及统计监控,重点解析其... 目录一、Caffeine 简介1. 框架概述1.1 Caffeine的核心优势二、Caffeine 基础2

python语言中的常用容器(集合)示例详解

《python语言中的常用容器(集合)示例详解》Python集合是一种无序且不重复的数据容器,它可以存储任意类型的对象,包括数字、字符串、元组等,下面:本文主要介绍python语言中常用容器(集合... 目录1.核心内置容器1. 列表2. 元组3. 集合4. 冻结集合5. 字典2.collections模块

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

Java集合中的链表与结构详解

《Java集合中的链表与结构详解》链表是一种物理存储结构上非连续的存储结构,数据元素的逻辑顺序的通过链表中的引用链接次序实现,文章对比ArrayList与LinkedList的结构差异,详细讲解了链表... 目录一、链表概念与结构二、当向单链表的实现2.1 准备工作2.2 初始化链表2.3 打印数据、链表长