Java中的集合

前言:

在开发应用程序时,如果想存储多个不同类型的数据,可以使用数组来实现,但是使用数组存在很多缺陷,比如:
1.数组的长度固定不变,不能很好的适应元素数量动态变化的情况。
2.可通过数组名.length获取数组的长度,却无法直接获取数组中实际存储的元素的个数。
3.数组采用在内存中分配连续的空间的存储方式存储,根据元素的信息查找时效率比较低,需要多次比较。
针对数组的缺陷,Java提出了比数组更为灵活,更使用的集合框架,可以大大提高软件的开发效率。

一.什么是集合

如下图所示,集合中有List , Set, Map都是接口,前两个继承至Collection接口,Map为独立接口
Java中的集合

1.1ArrayList介绍
也称Array List为动态数组
优点: 底层数据结数组,查询快,增删慢。
缺点: 线程不安全,效率高
常用方法:

方法 说明
boolean add(Object o) 在列表的末尾加元素,起始索引位置从0开始
void add(int index,Object o) 在指定的索引位置加上元素O,索引位置必须介于0和列表中元素个数之间
int size() 返回列表中元素的个数
Object get(int index) 返回指定位置的值,需要转换类型
void set(int index,Object obj) 将索引位置的元素替换为object元素
boolean contains(Object o) 判断列表中是否包含指定元素O
int indexOf(Object o) 返回元素在集合中出现的索引位置
boolean remove(Object o) 从元素中删除元素o
object remove(int index) 从列表中删除指定位置的元素,起始索引位置从0开始

2.LinkedList介绍
优点: 底层数据结构是链表,查询慢,增删快。
缺点: 线程不安全,效率高
常用方法:

方法 说明
void addFirst(Obj obj) 将指定元素插入到当前集合的首部
void addLast(Object) 将指定元素插入到当前集合的尾部
Object getFirst() 获得当前集合的第一个元素
Object getLast() 获得当前元素的最后一个元素
Object removeFirst() 移除并返回当前集合的第一个元素
Object removeLast() 移除并返回当前集合的最后一个元素

3.HashMap介绍

hashMap是键值对集合,键不能重复,最多有一个null,值是可以重复的。当jdk1.8之前,hashMap是数组+链表,jdk1.8之后是数组+链表+红黑树。
HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。  
值得注意的是HashMap不是线程安全的,如果想要线程安全的HashMap,可以通过Collections类的静态方法synchronizedMap获得线程安全的HashMap。

常用方法

方法 说明
object put (Object key,Object Value) 将相互关联的一个key与一个value放入该集合,如果Map接口中已经包含了Key对应的Value,则旧值将被替换
Object remove(Object key) 从当前集合中移除与指定key相关的映射,并返回该key关联的旧value如果key没有任何关联,则返回null
boolean containsKey(Object key) 判断集合中是否存在key
boolean containsValue(Object value) 判断集合中是否存在value
boolean isEmpty() 判断集合中是否存在元素
void clear() 清楚集合中所有的元素
int size() 返回集合中元素的数量
Set keySet() 获取所有key的集合
Collction values() 获取所有value的集合

深入了解hashMap可以看看这篇文章
https://www.cnblogs.com/xawei/p/6747660.html