Java基础 —— 集合(一)
集合(一)
数组和集合的区别
数组是固定长度的数据结构,而集合是动态的数据结构
数组可以包含基本数据类型和对象,集合只能包含对象
数组只能存放同一类型的数据,而集合可以蹲房不同类型的
数组可以直接访问元素,集合需要通过迭代器或其他方法访问元素
集合的分类

根据上图,可以看出,Java中集合的核心就是collection、map、Iterator,Collections是对集合进行操作的工具类,在图中,虚框代表接口或者抽象类,实框是类,实箭头表示继承,虚箭头表示实现;
collection:是集合List、Set、Queue的最基本接口
map:映射表的基础接口
Iterator:迭代器,可以通过迭代器遍历集合中的数据
集合主要可以分为两类(collection和map)
collection:集合List、Set、Queue的最基本接口(单列集合)
List:所有元素按照进入先后顺序进行存储,可重复集合,存取顺序一致
ArrayList:底层是数组,随机访问,增删慢,查询快,线程不安全
扩容机制:
- ArrayList容量为0时,添加元素需要扩容
无参构造:创建ArrayList后容量为0,添加一个元素后,容量变成10,之后正常扩容(为原来的1.5倍)
传容量构造:参数为0时,创建ArrayList后容量为0,添加一个元素后,容量为1,之后正常扩容
传列表参数:列表为空时,创建ArrayList后容量为0,添加一个元素后,容量为1,之后正常扩容
- ArrayList容量大于0,且是满的时,添加元素,正常扩容
LinkedList:底层是双向链表,增删快,查询慢,线程不安全
Vector:和ArrayList基本一样,但是它线程安全
Set:不允许包含重复的值(可以为空,但是只能有一个),无序
HashSet:使用哈希表存储元素,无序,其底层包装了一个HashMap去实现,所以查询插入速度较快
- LinkedHashSet:继承自HashSet类,它增加了一个重要特性,就是元素按照插入顺序进行存储
TreeSet:底层是基于TreeMap实现,它支持两种排序:自然排序和定制排序
Queue:队列,先进先出
Map:映射表的基础接口(双列集合)
HashTable:用哈希表实现,不可重复
key,key不能为空,效率较低,线程安全HashMap:用哈希表实现,不可重复
key,key可以为空,效率较高,线程不安全- LinkedHashMap:用哈希表和双向链表实现,按照
key的插入顺序存储
- LinkedHashMap:用哈希表和双向链表实现,按照
TreeMap:用红黑树算法实现,默认按照所有的
key进行升序排序,也可自定义排序方式
Java基础 —— 集合(一)的更多相关文章
- JAVA基础-集合(二)
一.Map整体结构体系 Map是集合的另一大派系,与Collection派系不同的是Map集合是以键值对儿的形式存储在集合的.两个键为映射关系,其中第一个键为主键(主键是唯一的不可重复),第二个键为v ...
- Java基础-集合的嵌套
Java基础-集合的嵌套 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.静态导入 静态导入是在JDK1.5后的新特性,可以减少开发的代码量,但是实际用处是很一般,静态导入的标准 ...
- Java基础——集合框架
Java的集合框架是Java中很重要的一环,Java平台提供了一个全新的集合框架.“集合框架”主要由一组用来操作对象的接口组成.不同接口描述一组不同数据类型.Java平台的完整集合框架如下图所示: 上 ...
- java基础---集合(1)
一. 基本概念 集合.数组都是对多个数据进行存储操作的结构,简称Java容器 数组:长度确定,类型确定,对于添加.删除.插入等操作效率不高,元素有序可重复 Java中集合框架顶层框架是:java.ut ...
- Java基础——集合源码解析 List List 接口
今天我们来学习集合的第一大体系 List. List 是一个接口,定义了一组元素是有序的.可重复的集合. List 继承自 Collection,较之 Collection,List 还添加了以下操作 ...
- Java基础—集合
一.概述 Java中的集合框架主要分为两大派别:Collection 和 Map —— 位于util包下 类的基础关系图如下(图片来自百度) 常用: List——有序可重复 Set——无序不可重复 M ...
- java基础集合简介Set(三)中
今天主要说夏set集合,每天抽出一个小时总结下,生活会更加美好! --< java.util >-- Set接口: 数据结构:数据的存储方式: Set接口中的方法和Collection中方 ...
- java基础集合经典训练题
第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...
- 十七、Java基础---------集合框架之Map
前两篇文章中介绍了Collection框架,今天来介绍一下Map集合,并用综合事例来演示. Map<K,V> Map<K,V>:Map存储的是键值对形式的元素,它的每一个元素, ...
- 十六、Java基础---------集合框架之Set
写在前面的话,这篇文章在昨天就写好了,今天打开的时候一不小心将第二天的文章粘贴到了这篇文章,很不幸的是除了标题之外依然面目全非,今天带着沉痛的心情再来写这篇文章! 上篇文章介绍了Collection体 ...
随机推荐
- CSS – 网页设计 Web Design
前言 Web Design 很广很深. 我记得许多年前第一次想介入设计工作 (我是后端工程师), 我就上网搜索了一下. 就看见了乔布斯著名的一句话: Design is not just what i ...
- [Tkey] 黑兔子,白兔子
CL-21 一般拿到这个题第一眼都应该能看出并查集,subtask1 是给并查集暴力修改的. 后面 subtask2 没有联通操作,是给纯线段树的,也算是启发正解了 再往下可以考虑操作 \(1\) 采 ...
- Kubernetes Deployment控制器(二十)
前面我们学习了 ReplicaSet 控制器,了解到该控制器是用来维护集群中运行的 Pod 数量的,但是往往在实际操作的时候,我们反而不会去直接使用 RS,而是会使用更上层的控制器,比如我们今天要学习 ...
- 非常非常好用的一款账户密码保存工具-KeePass
非常非常好用的一款账户密码保存工具 下载地址: https://sourceforge.net/projects/keepass/files/KeePass%202.x/2.55/KeePass- ...
- ChatGPT “眼”中的开源数据库
开源作为数据库发展的未来趋势之一,被冠以"数据库弯道超车的法宝"的称号.中国开源数据库产品正处于蓬勃发展的趋势,根据 墨天轮中国数据库流行度 ,截止2023年2月底已有46款开源数 ...
- iOS Xcode真机调试包下载地址
下载地址 https://github.com/iGhibli/iOS-DeviceSupport/tree/master/DeviceSupport 本地安装路径 /Applications/Xco ...
- Nuxt.js 应用中的 ready 事件钩子详解
title: Nuxt.js 应用中的 ready 事件钩子详解 date: 2024/10/12 updated: 2024/10/12 author: cmdragon excerpt: read ...
- Nginx 服务器 SSL 证书安装部署
工具:WinSCP.putty 下载证书 cloud.tencent.com_bundle.crt 证书文件 cloud.tencent.com_bundle.pem 证书文件 cloud.tence ...
- POI方式实现Excel表格数据导出
Excel表格导出 1.添加pom依赖 1 <!-- office 操作工具 --> 2 <dependency> 3 <groupId>org.apache.po ...
- 噢!JavaScript (2):对数组要小心使用delete
最近在重写我自己的静态博客生成器,虽然遇到的小问题挺多,但今早这个问题令我印象深刻. 发现问题 博客的文章基础数据储存在main.json中,其中专门有数组dateindex来储存经过排列后的文章顺序 ...