第一章 集合框架

news2025/1/22 8:24:31

文章目录

  • 什么是集合框架
  • 集合接口
      • Set和List的区别
  • 集合实现类(集合类)
  • 集合算法

什么是集合框架

官方教程
Java 集合框架 Java Collection Framework ,又被称为容器container,是定义在java.util包下的一组接口 interfaces和其实现类 classes 。
其主要表现为将多个元素 element 置于一个单元中,用于对这些元素进行快速、便捷的存储 store 、检索 retrieve 、管理 manipulate ,即平时我们俗称的增删查改CRUD
例如,一副扑克牌(一组牌的集合)、一个邮箱(一组邮件的集合)、一个通讯录(一组姓名和电话的映射关系)等等。
类和接口总览:
image.png
从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。
Collection 接口又有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap 等等。

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

  • 接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象
  • 实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。
  • 算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序,这些算法实现了多态,那是因为相同的方法可以在相似的接口上有着不同的实现。

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

集合接口

序号接口描述
1Collection 接口
Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)。
Collection 接口存储一组不唯一,无序的对象。
2List 接口
List接口是一个有序的 Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引(元素在List中位置,类似于数组的下标)来访问List中的元素,第一个元素的索引为 0,而且允许有相同的元素。
List 接口存储一组不唯一,有序(插入顺序)的对象。
3Set
Set 具有与 Collection 完全一样的接口,只是行为上不同,Set 不保存重复的元素。
Set 接口存储一组唯一,无序的对象。
4SortedSet
继承于Set保存有序的集合。
5Map
Map 接口存储一组键值对象,提供key(键)到value(值)的映射。
6Map.Entry
描述在一个Map中的一个元素(键/值对)。是一个 Map 的内部接口。
7SortedMap
继承于 Map,使 Key 保持在升序排列。
8**Enumeration
**这是一个传统的接口和定义的方法,通过它可以枚举(一次获得一个)对象集合中的元素。这个传统接口已被迭代器取代。

Set和List的区别

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

集合实现类(集合类)

Java提供了一套实现了Collection接口的标准集合类。其中一些是具体类,这些类可以直接拿来使用,而另外一些是抽象类,提供了接口的部分实现。
标准集合类汇总于下表:
在这里插入图片描述

通过java.util包中定义的类:
在这里插入图片描述

集合算法

集合框架定义了几种算法,可用于集合和映射。这些算法被定义为集合类的静态方法
在尝试比较不兼容的类型时,一些方法能够抛出 ClassCastException异常。当试图修改一个不可修改的集合时,抛出UnsupportedOperationException异常。
集合定义三个静态的变量:EMPTY_SET,EMPTY_LIST,EMPTY_MAP的。这些变量都不可改变。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/522263.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【华为HCIP | 高级网络工程师】刷题日记(8)

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大二在校生 &#x1f43b;‍❄️个人主页&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;落798. &#x1f54a;️系列专栏&#xff1a;零基础学java ----- 重识c语言 ---- 计算机网络 &#x1f413;每日一…

68.建立手风琴组件第一部分

本节目标 使用的文件 本次使用的文件可私信我获取&#xff0c;本次就只有两张图片 ● 我们导入两个照片至我们的项目文件夹&#xff0c;并新建一个HTML文件 ● 之后我们输入感叹号&#xff0c;让他自动为什么生成初始代码 ● 之后我们修改下title&#xff0c;导入字体、…

springboot+vue家具网站(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的家具网站。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌&#…

kafka之消费者进阶

一、几个概念 1. 消费者组 消费者组&#xff1a;一个消费者组包含多个消费者。同一个消费组的消费者&#xff0c;分别消费不同的partition&#xff0c;便于加快消费。 kafka约定在一个消费者组中&#xff0c;对于同一个topic&#xff0c;每个consumer会分配不同partition&am…

Unity搭建VR全景图

VR全景图片显示和相机旋转 ** 如果需要内置面材质球文件&#xff0c;可以私信下我 ** 场景构建 创建项目后拖进所需文件 文件有内置面材质球、图片等 创建文件 拖拽内置面材质球进入场景&#xff0c;并设置相机在球内部 再创建一个材质球&#xff0c;命名和图片相同 选…

springcloud+springboot+vue学生信息管理系统(选课,成绩,奖惩,奖学金,缴费)xnt81

后端语言&#xff1a;Java 框架&#xff1a;springcloudspringboot 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 学生信息管理系统主要实现角色有管理员和学生,教师,管理员在后台管理学生模块、学籍信息模块、选择课程模块、用户表模块、收藏表模块、课程信息模块…

国产航顺HK32F030M: 448byte EEPROM

EEPROM (~Electrically Erasable Programmable read only memory~)是指带电可擦可编程只读存储器。是一种掉电后数据不丢失的存储芯片。 HK32F030M用户手册V1.1.9.pdf bsp_eeprom.c #include "bsp_eeprom.h"/*****************************************************…

springboot+vue房产销售平台(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的房产销售平台。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌&a…

切换以太网接口MAC地址的批处理脚本

MAC&#xff08;媒体访问控制&#xff09;地址是网络设备的唯一标识符&#xff0c;用于网络通信。MAC 地址通常在设备制造时被分配并写入硬件。然而&#xff0c;在某些情况下&#xff0c;你可能需要或想要更改设备的 MAC 地址。以下是一些可能的理由&#xff1a; 1. **隐私和安…

Linux期末复习总结

一、Linux基础及安装 LINUX是在UNIX基础上开发,具有UNIX全部功能。 **Linux特点&#xff1a;**开放性、多用户、多任务、出色的稳定性、良好的用户界面、设备独立性、丰富的网络功能、安全性、可移植性 Linux由4个主要部分组成&#xff1a;内核、Shell、文件系统、应用程序 …

【Python入门篇】——Python中循环语句(while循环的基础语法和基础案例)

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; Python入门&#xff0c;本专栏主要内容为Python的基础语法&#xff0c;Python中的选择循环语句…

如何获得高并发经验?看这篇文章就够了

如何获得高并发经验&#xff1f; 这是我今天逛知乎的时候系统邀请我回答的一个问题&#xff0c;由此也引发了我的一些思考&#xff1a;为什么人人都想要获得高并发经验&#xff1b;想拥有高并发系统设计技能&#xff1f; 其原因LZ认为主要有以下三点&#xff1a; 涨薪&#x…

MD-MTSP:麻雀搜索算法SSA求解多仓库多旅行商问题(提供MATLAB代码,可以修改旅行商个数及起点)

一、多仓库多旅行商问题 多旅行商问题&#xff08;Multiple Traveling Salesman Problem, MTSP&#xff09;是著名的旅行商问题&#xff08;Traveling Salesman Problem, TSP&#xff09;的延伸&#xff0c;多旅行商问题定义为&#xff1a;给定一个&#x1d45b;座城市的城市集…

【C++】内联函数----inline函数的详细使用教程

&#x1f339;作者:云小逸 &#x1f4dd;个人主页:云小逸的主页 &#x1f4dd;Github:云小逸的Github &#x1f91f;motto:要敢于一个人默默的面对自己&#xff0c;强大自己才是核心。不要等到什么都没有了&#xff0c;才下定决心去做。种一颗树&#xff0c;最好的时间是十年前…

分享一个一键换肤按钮(超酷)

先上效果图&#xff1a; 效果图中转换为黑夜会有一个宇航员小猴子飞上来&#xff0c;途中没有截到。。。。 废话不多说&#xff0c;上代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title…

通过VS开发人员命令提示符(developer command prompt)查看类

1.首先打开开始菜单栏&#xff0c;找到相应的VS版本。这里以VS2022为例 2.找到developer command prompt选项&#xff0c;点击进入 3.进入控制台&#xff0c;进入源文件所在的盘符&#xff08;这里以D盘为例&#xff0c;如果是默认C盘可以不用改&#xff09; 4.输入cd 文件地址…

printBanner

主类 package com.example.demo;import com.application.Application;public class Demo {public static void main(String[] args) {Application application new Application("application.properties");application.run();}}创建对象&#xff0c;需要的参数&…

第十三届蓝桥杯青少组省赛Python真题,包含答案

目录 一、选择题 二、编程题 第十三届蓝桥杯青少组省赛Python真题,包含答案 一、选择题 第 1 题 单选题 下列关于函数的说法正确的是 () 。 答案&#xff1a;C 第 2 题 单选题 十进制数55转换成十六进制是 () 。 答案&#xff1a;C 第 3题 单选题 下列方法中&#xff0c;哪…

Sysfs简介

Sysfs学习记录 主要参考文献&#xff1a;https://xuesong.blog.csdn.net/article/details/109522945 Sysfs(System File System)是一种虚拟文件系统&#xff0c;它提供了一种在Linux和Unix系统中管理设备和内核参数的机制。Sysfs基于内核&#xff0c;将底层硬件信息和内核参数…

WPF:WPF原生布局说明

前言 WPF在国内讨论度很小&#xff0c;我在这里记录一下WPF简单的原生控件是如何使用的&#xff0c;顺便回忆一下WPF的基础知识&#xff0c;有些忘记的比较厉害了 WPF简介 WPF是微软推出的桌面UI软件&#xff0c;是我觉得最早实现MVVM&#xff08;数据驱动事务&#xff09;&…