Java集合总结

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中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

张_Laura

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

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

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

打赏作者

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

抵扣说明:

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

余额充值