collection集合 地址_Java集合简介

2023-11-08

1、概述

Java 集合框架提供了一套性能优良,使用方便的接口和类,位于java.util包中,使用集合框架的时直接从java.util中导包。

Java 集合框架主要包括两种类型的容器,一种是Collection,存储一个元素集合,另一种是Map,存储键/值对映射。Collection 接口又有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap 等等。整体的框架图如下所示:

集合框架是一个用来代表和操纵集合的统一架构。所有的集合框架都包含如下内容:

· 接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象

· 实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。

· 算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现。

除了Collection,该框架也定义了几个 Map 接口和类。Map 里存储的是键/值对。尽管 Map 不是集合,但是它们完全整合在集合中。集合框架体系如图所示:

2、Collection(单列元素)

collection的基本方法:

Collection与Array的区别:

Collection 接口分类:

├——-List 接口:元素按进入先后有序保存,可重复

│—————-├ LinkedList 接口实现类, 链表, 插入删除, 没有同步, 线程不安全

│—————-├ ArrayList 接口实现类, 数组, 随机访问, 没有同步, 线程不安全

│—————-└ Vector 接口实现类 数组, 同步, 线程安全

│ ———————-└ Stack 是Vector类的实现类

└——-Set 接口: 仅接收一次,不可重复,并做内部排序

├—————-└HashSet 使用hash表(数组)存储元素

│————————└ LinkedHashSet 链表维护元素的插入次序

└ —————-TreeSet 底层实现为二叉树,元素排好序

List与Set的区别:

  • Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。
  • Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 <实现类有HashSet,TreeSet>
  • List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变 <实现类有ArrayList,LinkedList,Vector>

3、Map(映射键值对)

Map 接口

├———Hashtable 接口实现类, 同步, 线程安全

├———HashMap 接口实现类 ,没有同步, 线程不安全-

│—————–├ LinkedHashMap 双向链表和哈希表实现

│—————–└ WeakHashMap

├ ——–TreeMap 红黑树对所有的key进行排序

└———IdentifyHashMap

注:Java 8以后,HashMap散列表的Node型数组不再全是链表了,而是根据参数TREEIFY_THRESHOLD值,如果小于这个值,还保持链表结构,如果大于这个值就将数据结构调整为红黑树。这个值一般默认为8。

概念说明:

Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 拉链法是一种解决Hash冲突的方法,具体做法是:将所有关键字为同义词的结点链接在同一个单链表中。若选定的散列表长度为m,则可将散列表定义为一个由m个头指针组成的指针数组T[0..m-1]。凡是散列地址为i的结点,均插入到以T[i]为头指针的单链表中。T中各分量的初值均应为空指针。在拉链法中,装填因子α可以大于1,但一般均取α≤1。

4、Iterator(迭代器)

一般遍历数组都是采用for循环或者增强for,这两个方法也可以用在集合框架,但是还有一种方法是采用Iterator(迭代器)遍历集合框架,它是一个对象,实现了Iterator 接口或ListIterator接口。

迭代器,使你能够通过循环来得到或删除集合的元素。ListIterator 继承了Iterator,以允许双向遍历列表和修改元素。

迭代器提供的方法如下:

  • iterator()方法,返回一个Iterator对象。
  • next()方法,获取迭代器的下一个元素,并会向后移动一个单位(注:初次调用next()会返回序列中的第一个元素)
  • hasNext()方法,判断迭代器是否还有下一个元素(不会移动迭代器)
  • remover()方法,删除当前的迭代器所指向元素,一般与next()方法连用

5、总结

本文简单总结了Java集合框架整体结构和基本情况,后续会详细总结一些常用的集合类的数据结构和面试Java基础的问题,做为码字新人,请多多关照。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

collection集合 地址_Java集合简介 的相关文章

  • 七、JDK1.7中HashMap扩容机制

    导读 前面文章一 深入理解 Java集合初篇 中我们对Java的集合体系进行一个简单的分析介绍 上两篇文章二 Jdk1 7和1 8中HashMap数据结构及源码分析 三 JDK1 7和1 8HashMap数据结构及源码分析 续 中我们分别对
  • java集合知识点汇总

    集合和数组的区别 数组只能存放基本数据类型和引用类型 集合只能存放引用类型 数组是固定长度 集合是可变长度 集合框架API Collection List ArrayList Vector LinkedList Set HashSet Li
  • Java集合——Java8之HashMap

    一 前言 在分析jdk1 8后的HashMap源码时 发现网上好多分析都是基于之前的jdk 而Java8的HashMap对之前做了较大的优化 其中最重要的一个优化就是桶中的元素不再唯一按照链表组合 也可以使用红黑树进行存储 总之 目标只有一
  • java.util.ConcurrentModificationException

    增强for底层用了迭代器 会导致遍历的时候修改集合中的元素出现java util ConcurrentModificationException 这是因为ArrayList底层维护了一个modCount用于记录list集合修改的次数 每操作
  • LinkList集合详解

    LinkList集合详解 1 LinkedList简介 LinkedList类是一个继承于AbstractSequentialList的双向循环链表 它是非同步的 也是非线程安全的 LinkedList实现了List接口 能对它进行队列操作
  • Java集合(Collection、Iterator、Map、Collections)概述——Java第十三讲

    前言 本讲我们将继续来讲解Java的其他重要知识点 Java集合 Java集合框架是Java编程语言中一个重要的部分 它提供了一套预定义的类和接口 供程序员使用数据结构来存储和操作一组对象 Java集合框架主要包括两种类型 一种是集合 Co
  • java: 详解java中的集合框架

    一 Java集合框架概述 1 图解 集合可以看作是一种容器 用来存储对象信息 所有集合类都位于java util包下 但支持多线程的集合类位于java util concurrent包下 上图中淡绿色背景覆盖的是集合体系中常用的实现类 分别
  • 遍历Map集合的四种方式

    遍历map集合 package map import java util HashMap import java util Map public class Test01 public static void main String arg
  • 整理java集合

    1 map 实现类 HashMap 无序 键值可为null 非同步 Hashtable 无序 键值非null 作键的对象必须实现 hashCode 方法和 equals 同步 性能低 LinkedHashMap 有序记录插入顺序 如果在映射
  • Java8 HashMap底层原理

    一 树集结构 1 1二叉查找树 二叉查找树 BST 具备什么特性呢 1 左子树上所有结点的值均小于或等于它的根结点的值 2 右子树上所有结点的值均大于或等于它的根结点的值 3 左 右子树也分别为二叉排序树 查找效率 二叉查找树查找的最大次数
  • Java 集合 - Map 接口

    文章目录 1 概述 2 常用 API 3 遍历 Map 集合 4 HashMap 和 Hashtable 5 LinkedHashMap 6 TreeMap 7 Properties 8 Set 集合与 Map 集合的关系 9 总结 1 概
  • 集合拷贝几种常用方法

    一种简单的方式是通过构造方 List
  • java常用集合之Map

    目录 Map集合基本内容 特点 扩容 遍历 Map集合实现 1 HashMap 基本原理 Table数组中的的Node 2 HashTable 3 ConcurrentHashMap 4 TreeMap 5 LinkedHashMap Ma
  • Hashtable vs ConcurrentHashMap

    来源 黑马教程 Hashtable vs ConcurrentHashMap 要求 掌握 Hashtable 与 ConcurrentHashMap 的区别 掌握 ConcurrentHashMap 在不同版本的实现区别 Hashtable
  • Java并发编程:Copy-On-Write机制详解

    前言 在多线程并发访问共享数据时 可能会出现并发问题导致程序崩溃 数据异常等情况 为了避免这些问题 Java中提供了多种并发控制方法 其中Copy On Write COW 机制就是一种常用的技术 本文将详细介绍COW机制的概念 如何保证线
  • collection集合 地址_Java集合简介

    1 概述 Java 集合框架提供了一套性能优良 使用方便的接口和类 位于java util包中 使用集合框架的时直接从java util中导包 Java 集合框架主要包括两种类型的容器 一种是Collection 存储一个元素集合 另一种是
  • Java比较器

    一 Java比较器的概述 1 为什么要使用比较器 当java涉及到数组排序时 就会使用到比较器 import java util Arrays public class ComparableTest1 public static void
  • LinkedList 对比 ArrayList 的区别

    LinkedList 底层是双向链表 基于双向链表 无需连续内存 随机访问慢 要沿着链表遍历 头尾插入删除性能高 占用内存多 ArrayList 底层是数组 5 基于数组 需要连续内存 6 随机访问快 指根据下标访问 7 尾部插入 删除性能
  • Guava 之 Multimap

    Multimap 是 guava 包下的一个接口 是一个 key collection 类型的集合 Multimap 接口方法 GwtCompatible public interface Multimap
  • Set集合中的SortedSet接口下的实现类TreeSet

    放入TreeSet集合中的元素必须实现Comparable接口 不然会报错 因为这个集合中的元素会自动按元素的大小顺序排序 所以不是实现比较的接口就会出现ClassCastException 还要注意一点的是Set集合中的元素是不可重读的

随机推荐

  • Second season fifteenth episode,How are Ross and Rachel doing

    Scene Chandler and Joey s apartment Joey and Chandler enter with Chandler covering his eyes and Joey leading him JOEY Al
  • y2第一章 初始mybatis的上机3_MyBatis3.2.x从入门到精通之第一章

    第一章 一 引言 mybatis是一个持久层框架 是apache下的顶级项目 mybatis托管到goolecode下 再后来托管到github下 百度百科有解释 二 概述 mybatis让程序将主要精力放在sql上 通过mybatis提供
  • 改进遗传算法的参数反演--实例复现(详细注释)

    目录 主函数 计算适应度大小 选择操作 论文中的竞争选择法 锦标赛选择法 交叉操作 论文中的离散交叉法 变异操作 论文中的非均匀变异法 生成测试数据 某次运行结果 主函数 清除变量 导入数据 clear clc load Data Crea
  • hihoCoder_1014

    include
  • 以 Animated Drawings APP 为例,用 TorchServe 进行模型调优

    内容导读 上节介绍了 TorchServe 模型部署调优的 5 个步骤 将模型部署到生产环境中 本节以 Animated Drawings APP 为例 实际演示 TorchServe 的模型优化效果 本文首发自微信公众号 PyTorch
  • C++中报错: E0289:没有与参数列表匹配的构造函数“Employee::Employee”实例的解决方案

    仅为学习笔记 大佬请跳过 解决 将构造函数代码中的char pName改为const char pName即可 背景 构造函数等成员函数全部都写了 仍出现这个报错 解决 将构造函数代码中的char pName改为const char pNa
  • 【机器学习期末总结】5-感知机

    分离超平面 随机梯度下降 对偶形式 感知机简介 感知机1957年由Rosenblatt提出 是神经网络与支持向量机的基础 感知机是二类分类的线性分类模型 输入是实例的特征向量 输出是实例的类型 1 1 感知机模型是一个分离超平面 感知机预测
  • Linux crontab命令 定时任务 用法详解以及no crontab for root解决办法

    一 Linux系统安装crontab服务 1 确认crontab是否安装 crontab l 如果报 command not found 就说明该crontab服务没有安装 如果报 no crontab for root 就说明已经安装cr
  • python------线程池的应用

    在python中经常会使用异步 线程池 进程池 解决io操作 在爬虫中并不建议使用进程池 消耗过大 目标 会使用线程池 1 导入 import time def demo1 for i in range 3 print f 我饿了 i ti
  • MVCC与BufferPool缓存机制

    今天学习了MVCC与BufferPool缓存机制 这里记录一下学习笔记 有错误 还望指出 文章目录 MVCC多版本并发控制机制 undo日志版本链与read view机制 Innodb引擎SQL执行的BufferPool缓存 MVCC多版本
  • 《前端》jQuery-ajax例子

    我的jQuery ajax的笔记 https blog csdn net bellediao article details 104239715 从其他博主那里截取的例子 并附有疑问解答 例1 将接口中的result字段绘制成表格
  • Windows官方Linux子系统C/C++开发环境搭建

    关于利用 Windows 10 适用于 Linux 的 Windows 子系统 WSL 安装 Linux 在 Windows 平台直接运行而不依赖虚拟机并通过 Visual Studio Code 在 Windows 平台直接开发并调试Li
  • 搜索+防抖

    搜索 防抖 1 以每时每刻这个项目为例 很多页面都有搜索功能 而且跳转的时同一个搜索页面 在完成搜索功能后 在返回原页面 需要一个唯一标识来记载 搜索 goSearch this router push path search query
  • 详解Python进程与线程

    一 进程 1 1 进程概念 进程是资源分配的最小单位 程序隔离的边界 CPU的时间片轮转 在不同的时间段切换执行不同的进程 但是切换进程是比较耗时的 就引来了轻量级进程 也就是所谓的线程 一个进程中包括多个线程 代码流 其实也就是进程中同时
  • 如何进行安全性测试?

    1 功能验证 功能验证是采用软件测试当中的黑盒测试方法 对涉及安全的软件功能 如 用户管理模块 权限管理模块 加密系统 认证系统等进行测试 主要验证上述功能是否有效 具体方法可使用黑盒测试方法 2 漏洞扫描 安全漏洞扫描通常都是借助于特定的
  • [Git]记录Git Rebase和PR经验

    1 Git Pull Request 大概说一下 PR这个操作是你作为一个collaborator切出来了一个分支 在上面做了某些操作 可能是协作开发 可能是优化等 在此之后希望owner把你的代码pull到某个分支 比如master 上的
  • SIFT解析(一)建立高斯金字塔

    SIFT Scale Invariant Feature Transform 尺度不变特征转换 在目标识别 图像配准领域具有广泛的应用 下面按照SIFT特征的算法流程对其进行简要介绍对SIFT特征做简要介绍 高斯金字塔是SIFT特征提取的第
  • Write-back,Write-through及write allocate

    此文为转载 如需原始作者要求删除请私信我 计算机的存储系统采用Register Cache Memory和I O的方式来构成存储系统 无疑是一个性能和经济性的妥协的产物 Cache和Memory机制是计算机硬件的基础内容 这里就不再啰嗦 下
  • 【Java笔记+踩坑】SpringBoot基础4——原理篇

    导航 黑马Java笔记 踩坑汇总 JavaSE JavaWeb SSM SpringBoot 瑞吉外卖 SpringCloud SpringCloudAlibaba 黑马旅游 谷粒商城 目录 1 自动配置工作流程 1 1 bean的加载方式
  • collection集合 地址_Java集合简介

    1 概述 Java 集合框架提供了一套性能优良 使用方便的接口和类 位于java util包中 使用集合框架的时直接从java util中导包 Java 集合框架主要包括两种类型的容器 一种是Collection 存储一个元素集合 另一种是