集合

1. 数组封装

1.1. 需求

数组操作,相对还是比较复杂的,也不能做添加操作和删除操作,当需要添加和删除的时候需要新建数组,复制数组,或者元素位移,比较麻烦

所以我们对这些添加和删除操作进行封装

1.2. 编码实现

1.3. 测试

2. 集合

2.1. 概述

Java集合是使程序能够存储和操纵元素不固定的一组数据。所以Java集合类都位于Java.util包中。

【问】:之前我们需要把多个元素放到一起的时候,使用的是数组。那么为何还要提供Java集合工具类呢?
我们通过对比数组和Java集合工具类来解释Java集合工具类的必要性。

数组

集合

长度固定

长度不固定

存放任意类型

不能存放基本数据类型,只能存放对象的引用


注意:如果集合中存放基本类型,一定要将其 “装箱”成对应的”基本类型包装

2.2. 继承体系

Collection是集合,两个直接子类接口是ListSet

List特征:有序,可重复,保证数据的添加顺序和取出顺序一致

Set特性:无序,不可重复,不能保证数据的添加和取出顺序一致

List有三个子类:

ArrayList:底层是数组,查询和更改效率极高

LinkedList:底层是双向链表,添加和删除效率要高一些

Vector:底层也是数组,是线程安全,已废弃,不推荐使用,已被ArrayyList代替

Set有两个子类:

HashSet:底层是散列表

TreeSet:底层是二叉树

2.3. Collection(集合类父类)

Collection作为集合类的父类,所以,collection中的方法,是所有集合类都有的方法

2.3.1. 常用方法

2.3.2. 使用方式

创建:Collection collection = new ArrList();

添加单个数据到尾部:collection.add("a");

添加一个集合,等于合并两个集合:collection addAll(collection);

没有提供修改和获取的方法

删除某个元素:collection.remove("a");

删除指定集合中所有元素:collection.removeAll(collection);

个数:System.out.println(collection.size());

清空:collection.clear();

判断是否为空(个数是否为0):System.out.prrintln(collection.isEmpty());

判断是否包含某个元素:System.out.println(collection.contains("xxx"));

2.3.3. Iterator(迭代器)

迭代器:主要是做遍历操作,使用迭代器可以屏蔽数据结构之间的差异性

hasNext判断是否还有元素

next返回下一个元素

remove删除这个元素,(注意使用这个迭代器时,如果要删除元素必须使用迭代器的remove删除)

迭代器一旦生成,集合不能修改,否则就需要重新生成迭代器iterator()

2.3.4. 注意

contains(Object o):判断是否包含某个元素

remove(Obiect o):删除指定元素

这两个方法,底层都会区调用equals方法进行比较

2.4. forEach(迭代器的简写形式)

for(数据类型 变量 : 集合/数组){循环体}

2.5. List

List:有序可重复

有序:先后顺序,先到先得,队列,添加顺序取出顺序是一样的

可重复:可以添加重复数据

ArrayList:底层是Object数组,所以查询和修改效率极高

LinkedList:底层是双向链表,随机添加和删除效率极高

2.5.1. ArrayList

2.5.2. LinkedList

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值