Java集合总结

本文详细介绍了Java集合框架,包括集合、数组与集合的区别、集合的分类如List、Set及其实现类如ArrayList、LinkedList、HashSet等。讨论了各种集合的特点、常用方法及遍历方式,如Iterator和增强for循环。同时,还对比了Map接口的实现类如HashMap、TreeMap,并探讨了集合选型规则以及Collections工具类的使用。

java集合概述

对集合的理解

存储对象的容器,面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,存储对象,集合是存储对象最常用的一种方式。
集合的出现就是为了持有对象。集合中可以存储任意类型的对象, 而且长度可变。在程序中有可能无法预先知道需要多少个对象, 那么用数组来装对象的话, 长度不好定义, 而集合解决了这样的问题。

集合和数组的区别

数组和集合类都是容器
数组:
长度开始时必须指定,而且一旦指定,就不能更改
保存的必须是同一类型的元素
使用数组进行增加、删除元素的示意代码-比较麻烦
集合:
可以动态保存多个对象,使用方便
提供了一系列方便的操作对象的方法,add remove set get等
使用集合添加、删除新元素的示意代码-简洁

集合的分类

Java 集合可分为 Collection 和 Map 两种体系
collection 接口有两个重要的子接口,list set ,他们的实现子类都是单列集合
map接口的实现子类 是双列集合存放的k-v
在这里插入图片描述
在这里插入图片描述

collection接口和常用方法

接口实现类的特点:

  • collection实现子类可以存放多个元素,每个元素可以是object
  • 有些collection的实现类,可以存放重复的元素,有些不可以
  • 有些collection的实现类,有些是有序的(list),有些是无序的(set)
  • collection接口没有直接的实现子类,是通过它的子接口set和list实现的

collection接口的常用方法

  • add:添加单个元素
  • remove:删除指定元素
  • contains:查找元素是否存在
  • size:获取元素个数
  • isEmpty:判断是否为空
  • clear:清空
  • addAll:添加多个元素
  • containsAll:查找多个元素是否都存在
  • removeAll:删除多个元素

遍历方式:

  • Iterator迭代器

所有实现了collection接口的集合类都有一个Iterator()方法,用来返回一个Iterator接口的对象,即返回一个迭代器
Iterator仅用来遍历结合,iterator本身并不存放对象

在这里插入图片描述

  1. 增强for循环

可以替代迭代器,增强for循环就是简化版的迭代器,本质一样,只能用于遍历集合或者数组

list

list接口是collection接口的子接口
list集合类中元素有序(即添加顺序和取出顺序一致)可以去重复
list集合中每个元素都有对应的顺序索引,支持索引
list容器中的每个元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素

接口方法

在这里插入图片描述

实现类和扩容

在这里插入图片描述

Vector和ArrayList比较

ArrayList和LinkedList比较

在这里插入图片描述

如何选择ArrayList和LinkedList

  • 如果改查的操作多,选择ArrayList
  • 如果增删的操作多,选择LinkedList
  • 一般来说,在程序中,80%-90%的操作都是查询,因此大部分情况下会选择ArrayList
  • 在一个项目中,根据业务灵活选择,也可以这样 ,一个模块使用的是ArrayList,另外一个模块是LinkedList,也就是说,要根据业务来进行选择

set

接口方法和list接口方法一样,遍历方式和collection遍历方式一样。

1、存储元素无序,即存元素和取元素的顺序可能不一致,但第一次遍历和最后一次遍历取出元素的顺序是不变的
2、无索引,不能使用for循环遍历
3、存储元素不重复
4、遍历方式
a:迭代器
b:增强for

实现类和扩容

在这里插入图片描述
在这里插入图片描述

map

在这里插入图片描述

接口常用方法

put:添加
remove:根据键删除映射关系
get:根据键获取值
size:获取元素个数
isEmpty:判断个数是否为0
clear:清除
containsKey:查找键是否存在

接口实现类特点

  • Map和collection并列存在,用于保存具有映射关系的数据
  • Map中的key和value可以是任何引用类型的数据,会封装到HashMap$Node对象中
  • Map中的key不允许重复,原因和HashSet一样
  • Map中的value可以重复
  • Map 中的key可以为null,value也可以为null,注意key为null只能有一个,value为null可以有多个
  • 常用String类作为Map的key
  • key与value之间存在单向一对一的关系,即通过指定的key总能找到对应的value

接口实现类

在这里插入图片描述

在这里插入图片描述

Hashtable和HashMap的对比

在这里插入图片描述

HashMap和TreeMap存储元素不重复对比

HashMap存储元素是根据equals对比元素是否相等来决定的、
TreeMap存储元素不重复是根据compare,自定义规则来决定的

集合选型规则

在这里插入图片描述

collections工具类

Collections是一个操作Set List Map 等集合的工具类
Collections中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作

在这里插入图片描述
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张_Laura

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值