Java集合框架

一、概述

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

所有的集合框架都包含如下内容:

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

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

(3)算法:是实现集合接口的对象里的方法执行的一些有用的计算。

二、Collection接口

存储一组 不唯一,无序的对象

1、常用方法

(1)boolean add(Object obj):向集合中添加Object型元素

(2)int size():获取集合中元素的个数

(3)void clear():清空集合中的所有元素

(4)boolean contains(Object o):判断集合中是否存在某个指定对象

(5)boolean remove(Object o):删除集合中的指定对象

(6)boolean isEmpty():判断集合中的元素个数是否为0

(7)Object[] toArray():把集合中的元素转成数组返回

(8)Iterator iterator():返回集合中的迭代器对象

(9)boolean contains(Object o):判断当前集合是否包含obj

(10)void retainAll():获取两个集合的交集

(11)集合转换为数组:toArray()

(12)数组转换为集合:asList()

Iterator中有两个方法:

(1)boolean hasNext():迭代过程中判断是否还有元素可迭代。

(2)Object next():返回迭代的下一个元素

三、List接口

存储一组不唯一,有序(插入顺序)的对象

1、ArrayList

(1)实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素的效率比较高

(2)ArrayList类是List接口的一个具体实现类;

         ArrayList对象实现了可变大小的数组;

         随机访问和遍历元素时,它提供更好的性能

(3)常用方法

方法名

说明

boolean add(Object o)

在列表的末尾顺序添加元素,起始索引位置从0开始

void add(int index,Object o)

在指定的索引位置添加元素。索引位置必须介于0和列表中元素个数之间

int size()

返回列表中的元素个数

Object get(int index)

返回指定索引位置处的元素。取出的元素是Object类型,使用前需要进行强制类型转换

boolean contains(Object o)

判断列表中是否存在指定元素

boolean remove(Object o)

从列表中删除元素

Object remove(int index)

从列表中删除指定位置元素,起始索引位置从0开始

2、LinkedList

(1)采用链表存储方式,插入、删除元素时效率比较高

(2)LinkedList类是List接口的一个具体实现类;

         LinkedList 类用于创建链表数据结构;

         插入或者删除元素时,它提供更好的性能

3、常用方法

方法名

说明

void  addFirst(Object o)

在列表的首部添加元素

void  addLast(Object o)

在列表的末尾添加元素

Object  getFirst()

返回列表中的第一个元素

Object  getLast()

返回列表中的最后一个元素

Object  removeFirst()

删除并返回列表中的第一个元素

Object  removeLast()

删除并返回列表中的最后一个元素

四、set接口

1、存储一组唯一,无序的对象,HashSet是Set接口常用的实现类,是一个不允许有重复元素的集合。

2、遍历集合的方法

方法1:通过迭代器Iterator实现遍历

Iterator iterator = coll.iterator();
while(iterator.hasNext()){
    System.out.println(iterator.next());
}

方法2:增强型for循环

for (String str:set) {
    System.out.println(str);
}

3、常用方法

方法          操作
void add(Object o)向set集合中添加元素
int size()返回set集合中的元素个数
boolean remove(Object o)删除Set集合中的元素
boolean isEmpty(Object o)判断set集合中是否包含元素o
void clear()清空set集合中的所有元素
boolean contains(Object o)判断set集合中是否包含元素o
terator iterator()返回集合中的迭代器对象

五、Map接口

1、存储一组键值对象,提供key到value的映射

2、HashMap原理

hashMap是由数组和链表这两个结构来存储数据。

数组:存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);寻址容易,插入和删除困难;

链表:存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N);寻址困难,插入和删除容易。

3、常用方法

方法描述
clear()删除 hashMap 中的所有键/值对
clone()复制一份 hashMap
isEmpty()判断 hashMap 是否为空
size()计算 hashMap 中键/值对的数量
put()将键/值对添加到 hashMap 中
putAll()将所有键/值对添加到 hashMap 中
putIfAbsent()如果 hashMap 中不存在指定的键,则将指定的键/值对插入到 hashMap 中。
remove()删除 hashMap 中指定键 key 的映射关系
containsKey()检查 hashMap 中是否存在指定的 key 对应的映射关系。
containsValue()检查 hashMap 中是否存在指定的 value 对应的映射关系。
replace()替换 hashMap 中是指定的 key 对应的 value。
replaceAll()将 hashMap 中的所有映射关系替换成给定的函数所执行的结果。
get()获取指定 key 对应对 value

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值