百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

java集合框架详解(java集合框架是什么,有什么优点)

ccwgpt 2024-10-02 12:07 22 浏览 0 评论

概述

“集合框架”由一组用来操作对象的接口组成,操作主要以下三种:

  • 添加新的对象
  • 删除对象
  • 查找对象

应用场景:

  • 动态扩充容器的大小
  • 容器支持去掉重复数据
  • 快速按条件查找数据
  • 对数据进行排序

集合框架图

集合类对比

容器的分类

  • Collection 一组对立的元素,通常这些元素都服从某种规则。List必须保持元素特定的顺序,而Set 不能有重复元素。
  • Map 一组 成对的“键值对”对象。初看起来这似乎应该是一个Collection ,其元素是成对的对象,但是这样的设计实现起来太笨拙了,于是我们将Map明确的提取出来形成一个独立的概念。另一方面,如果使用Collection 表示Map的部分内容,会便于查看此部分内容。因此Map一样容易扩展成多维Map ,无需增加新的概念,只要让Map中的键值对的每个“值”也是一个Map即可。

Collection和Map的区别在于容器中每个位置保存的元素个数。Collection 每个位置只能保存一个元素(对象)。此类容器包括:List ,它以特定的顺序保存一组元素;Set 则是元素不能重复。

Map保存的是“键值对”,就像一个小型数据库。我们可以通过“键”找到该键对应的“值”。

Collection – 对象之间没有指定的顺序,允许重复元素。

Set – 对象之间没有指定的顺序,不允许重复元素

List– 对象之间有指定的顺序,允许重复元素,并引入位置下标。

Map – 接口用于保存关键字(Key)和数值(Value)的集合,集合中的每个对象加入时都提供数值和关键字。Map 接口既不继承 Set 也不继承 Collection。

Collection 接口用于表示任何对象或元素组。想要尽可能以常规方式处理一组元素时,就使用这一接口。它是 List和Set 的父类。并且它本身也是一个接口。它定义了作为集合所应该拥有的一些方法。

Collection接口

Collection接口支持如添加和除去等基本操作。

boolean add(Object element)

boolean remove(Object element)

int size()

boolean isEmpty()

boolean contains(Object element)

Iterator iterator()

boolean containsAll(Collection collection)

boolean addAll(Collection collection)

void clear()

void removeAll(Collection collection)

void retainAll(Collection collection)

containsAll()

方法允许您查找当前集合是否包含了另一个集合的所有元素,即另一个集合是否是当前集合的子集。其余方法是可选的,因为特定的集合可能不支持集合更改。 addAll() 方法确保另一个集合中的所有元素都被添加到当前的集合中,通常称为并。 clear() 方法从当前集合中除去所有元素。 removeAll() 方法类似于 clear() ,但只除去了元素的一个子集。 retainAll() 方法类似于 removeAll() 方法,不过可能感到它所做的与前面正好相反:它从当前集合中除去不属于另一个集合的元素。

List接口

List 就是列表的意思,它是Collection 的一种,即继承了 Collection 接口,以定义一个允许重复项的有序集合。该接口不但能够对列表的一部分进行处理,还添加了面向位置的操作。List 是按对象的进入顺序进行保存对象,而不做排序或编辑操作。它除了拥有Collection接口的所有的方法外还拥有一些其他的方法。

面向位置的操作包括插入某个元素或 Collection 的功能,还包括获取、除去或更改元素的功能。在 List 中搜索元素可以从列表的头部或尾部开始,如果找到元素,还将报告元素所在的位置。

void add(int index, Object element) :添加对象element到位置index上

boolean addAll(int index, Collection collection) :在index位置后添加容器collection中所有 的元素

Object get(int index) :取出下标为index的位置的元素

int indexOf(Object element) :查找对象element 在List中第一次出现的位置

int lastIndexOf(Object element) :查找对象element 在List中最后出现的位置

Object remove(int index) :删除index位置上的元素

Object set(int index, Object element) :将index位置上的对象替换为element 并返回老的 元素。

成员要求 List 提供基于索引的对成员的随机访问 ArrayList 提供快速的基于索引的成员访问,对尾部成员的增加和删除支持较好 成员可为任意Object子类的对象 LinkedList 对列表中任何位置的成员的增加和删除支持较好,但对基于索引的成员访问支持性能较差 成员可为任意Object子类的对象 在“集合框架”中有两种常规的 List 实现:ArrayList 和 LinkedList。使用两种 List 实现的哪一种取决于您特定的需要。如果要支持随机访问,而不必在除尾部的任何位置插入或除去元素,那么,ArrayList 提供了可选的集合。但如果,您要频繁的从列表的中间位置添加和除去元素,而只要顺序的访问列表元素,那么,LinkedList 实现更好


Map 接口

改变操作允许您从映射中添加和除去键-值对。键和值都可以为 null。但是,您不能把 Map 作为一个键或值添加给自身。

Object put(Object key,Object value):用来存放一个键-值对Map中

Object remove(Object key):根据key(键),移除一个键-值对,并将值返回

void putAll(Map mapping) :将另外一个Map中的元素存入当前的Map中

void clear() :清空当前Map中的元素

查询操作允许您检查映射内容:

Object get(Object key) :根据key(键)取得对应的值

boolean containsKey(Object key) :判断Map中是否存在某键(key)

boolean containsValue(Object value):判断Map中是否存在某值(value)

int size():返回Map中 键-值对的个数

boolean isEmpty() :判断当前Map是否为空

最后一组方法允许您把键或值的组作为集合来处理。

public Set keySet() :返回所有的键(key),并使用Set容器存放

public Collection values() :返回所有的值(Value),并使用Collection存放

public Set entrySet() :返回一个实现 Map.Entry 接口的元素 Set

因为映射中键的集合必须是唯一的,就使用 Set 来支持。因为映射中值的集合可能不唯一,就使用 Collection 来支持。最后一个方法返回一个实现 Map.Entry 接口的元素 Set


Set 接口

Set 接口继承 Collection 接口,而且它不允许集合中存在重复项。

public int size() :返回set中元素的数目,如果set包含的元素数大于Integer.MAX_VALUE,返回 Integer.MAX_VALUE

public boolean isEmpty() :如果set中不含元素,返回true

public boolean contains(Object o) :如果set包含指定元素,返回true

public Iterator iterator() 返回set中元素的迭代器

元素返回没有特定的顺序,除非set是提高了该保证的某些类的实例

public Object[] toArray() :返回包含set中所有元素的数组

public Object[] toArray(Object[] a) :返回包含set中所有元素的数组,返回数组的运行时 类型是指定数组的运行时类型

public boolean add(Object o) :如果set中不存在指定元素,则向set加入

public boolean remove(Object o) :如果set中存在指定元素,则从set中删除

public boolean removeAll(Collection c) :如果set包含指定集合,则从set中删除指定集合 的所有元素

public boolean containsAll(Collection c) :如果set包含指定集合的所有元素,返回true。 如果指定集合也是一个set,只有是当前set的子集时,方法返回true

public boolean addAll(Collection c) :如果set中中不存在指定集合的元素,则向set中加入 所有元素

public boolean retainAll(Collection c) :只保留set中所含的指定集合的元素(可选操作)。换言之,从set中删除所有指定集合不包含的元素。 如果指定集合也是一个set,那么该操作修改set的效果是使它的值为两个set的交集

public boolean removeAll(Collection c) :如果set包含指定集合,则从set中删除指定集合的所有元素

public void clear() :从set中删除所有元素


相关推荐

Dubbo最全详解(万字图文总结)

大家好,我是mikechen。Dubbo是非常重要的分布式中间件,也是微服务的核心框架,而且大厂也特别喜欢考察Dubbo,下面我就全面来详解Dubbo@mikechen本篇已收于mikechen原创超...

探秘Dubbo:RPC框架的奇妙世界

探秘Dubbo:RPC框架的奇妙世界大家好啊!今天我要带大家走进一个神奇的编程领域——分布式服务调用。说起分布式系统,很多程序员都头疼不已。但今天咱们不谈那些让人抓狂的网络延迟、负载均衡等问题,而是聚...

Dubbo分布式服务框架:像调教宠物一样驾驭它

Dubbo分布式服务框架:像调教宠物一样驾驭它大家好呀,今天我们来聊聊Dubbo这个分布式服务框架,它就像一只温顺的小猫咪,但有时候也会调皮捣蛋,所以得好好调教一番。别担心,我会用最轻松的方式来帮你搞...

深入浅出:Dubbo框架源码分析

深入浅出:Dubbo框架源码分析Dubbo是一款由阿里巴巴开源的高性能分布式服务框架,广泛应用于微服务架构中。它为开发者提供了强大的RPC调用能力,使得分布式系统中的服务间通信变得简单高效。本文...

Dubbo分布式服务框架:从零开始的实战之旅

Dubbo分布式服务框架:从零开始的实战之旅Dubbo作为一个高性能的JavaRPC框架,在微服务架构中扮演着重要角色。它能帮助开发者轻松构建分布式系统,实现服务间的高效通信。今天,我们就来一起探索...

Dubbo分布式服务框架的工作原理:从入门到精通

Dubbo分布式服务框架的工作原理:从入门到精通Dubbo是一个高性能的Java分布式服务框架,由阿里巴巴开源。它致力于提供透明化的远程方法调用(RPC),使得开发者能够像调用本地服务一样调用远程服务...

框架的本质分析——Dubbo

诞生的背景什么背景下诞生了该技术?不论是哪个框架,不会平白无故诞生,不会平白无故的被人所追捧,了解其背景,追根溯源。随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架...

2023编导艺考「热点话题」评述框架示例(七个2022热点)

2022冬奥会开幕式(1)“旧”文化符号的“新”应用(2)“全媒体”时代的“小人物”(3)“简约”的形式表达“丰富”的内核(4)“新”叙事结构打破“旧”国家形象(5)数字媒介增强受众“在场感”短视频“...

84页思考的框架,思维模型的全明星集合,9种经典思维模型

分享职场干货,提升能力!为职场精英打造个人知识体系,升职加薪!84页思考的框架如何拿到分享的源文件:请您关注、转发,然后私信本头条号“文米”2个字,按照操作流程,专人负责发送源文件给您。...

DUSt3R-从任意图像集合中重建3D场景的框架

DUSt3R是什么DUSt3R(DenseandUnconstrainedStereo3DReconstruction,密集无约束立体三维重建)是由来自芬兰阿尔托大学和Naver欧洲实验室的...

高考数学:一张思维导图掌握集合知识点,真题解析巩固知识

一、思维导图二、疑难透析三、题型示例1、已知集合A={1,3},B={x丨mx-3=0},且A∪B=A,则m的取值是()。【解析】分类讨论思想∵AUB=A∴BA(1)当m=0时,B=,符合条件;...

java集合框架03——ArrayList和源码分析

上一章学习了Collection的架构,并阅读了部分源码,这一章开始,我们将对Collection的具体实现进行详细学习。首先学习List。而ArrayList又是List中最为常用的,因此本章先学习...

Java Collections 工具类集合框架中常用算法解析

在软件开发中,算法是非常重要的一部分,它们可以提供高效的数据处理和操作。在Java集合框架中,有几个常用的算法,包括排序算法、二分查找算法、洗牌算法和旋转算法。本文将对这些算法进行详细解析,并写了一些...

1.6、Java 异常处理机制与集合框架(List、Set、Map等)

在Java编程中,异常处理机制和集合框架是两个非常重要的概念。前者帮助开发者处理程序运行时可能遇到的错误,确保程序能够稳定运行;后者则提供了一种有效的方式来管理和操作数据集合。本文将分别介绍Java中...

Java集合框架性能优化秘籍

Java集合框架性能优化秘籍在Java的世界里,集合框架就像一座巨大的宝库,存储着我们程序的各种数据。然而,随着数据量的增大,如何让这座宝库更高效地运作,就成了我们必须掌握的艺术。今天,我们就来聊聊J...

取消回复欢迎 发表评论: