- Collection接口:单列集合,存储一个一个的对象
- List接口:存储有序、可重复的数据,长度可变。-->相当于“动态”数组。
- Set接口:存储无序的、不可重复的数据。-->相当于高中讲的“集合”(无序、确定、互斥)。
- Map接口:双列集合(映射),存储键值对key-value -->函数:y = f(x),不同的x可以指向同一个y(y=x2),同一个x不能指向多个y;x就相当于key,y相当于value。
1.Collection接口

2.Collection接口中的常用方法
方法 |
描述 |
add(Object e) |
将元素e添加到集合中 |
addAll(Collection coll) |
将集合coll中的元素添加到当前集合中 |
size() |
获取集合中元素个数 |
clear() |
清空集合元素 |
isEmpty() |
判断当前集合是否为空 |
contains(Object obj) |
判断当前集合中是否有obj,会调用obj所在类的equals方法 |
containsAll(Collection coll) |
判断coll集合中的所有元素是否都存在于当前集合中 |
remove(Object obj) |
从当前集合中移除obj |
removeAll(Collection coll) |
从当前集合中移除coll集合的所有元素 |
retainAll(Collection coll) |
获取当前集合和coll集合的交集,并返回给当前集合 |
equals(Object o) |
要想返回true,需要当前集合和形参集合的元素都相同 |
hashCode() |
返回当前对象的hash值 |
Object[] arr = coll.toArray(); |
集合-->数组 |
Iterator iterator = coll.iterator(); |
返回的迭代器对象用于遍历集合 |
| public void test1() { |
| Collection coll = new ArrayList(); |
| |
| coll.add("AA"); |
| coll.add(123); |
| coll.add(new Date()); |
| |
| int size = coll.size(); |
| |
| Collection coll2 = new ArrayList(); |
| coll2.add(456); |
| coll2.add("CC"); |
| coll.addAll(coll2); |
| |
| coll.clear(); |
| |
| coll.isEmpty(); |
| |
| Collection coll3 = new ArrayList(); |
| coll3.add(123); |
| coll3.add(new Person("Jerry", 18)); |
| coll3.add(new String("Tom")); |
| coll3.add(false); |
| |
| boolean isContains1 = coll3.contains(123); |
| boolean isContains2 = coll3.contains(new String("Tom")); |
| boolean isContains3 = coll3.contains(new Person("Jerry", 18)); |
| |
| Collection coll4 = new ArrayList(); |
| coll4.add(123); |
| coll4.add(4567); |
| boolean isContains4 = coll3.containsAll(coll4); |
| |
| coll3.remove(123); |
| boolean jerry = coll3.remove(new Person("Jerry", 18)); |
| |
| coll3.removeAll(coll4); |
| |
| boolean b = coll3.retainAll(coll4); |
| |
| coll3.hashCode(); |
| |
| coll3.equals(coll4); |
| } |
3.集合与数组之间的转换
(1)集合-->数组
| Object[] arr = coll4.toArray(); |
(2)数组-->集合
调用工具类Arrays类的静态方法asList();
| String[] names = new String[]{"张三","李四","王五"}; |
| List<String> nameList = Arrays.asList(names); |
4.使用iterator对象遍历集合中的元素
(1)创建对象,每次调用这个方法都会得到一个全新的对象
| Iterator iterator = coll.iterator(); |
(2)Iterator接口中的方法
hasNext()
:判断是否有下一个元素
next()
:指针下移,下移后将集合位置上的元素返回。
remove()
:删除集合中的元素,不是Collection接口中的remove
- 指针未指向元素、集合为空、重复remove都会报IllegalStateException
初始时指向前一个位置,调用next指向下一个

(3)错误方式
| |
| Collection coll = new ArrayList(); |
| coll.add(123); |
| coll.add(456); |
| coll.add(new Person("Jerry",20)); |
| coll.add(new String("Tom")); |
| coll.add(false); |
| |
| Iterator iterator = coll.iterator(); |
| while ((iterator.next())!=null){ |
| System.out.println(iterator.next()); |
| } |
| |
| |
| while (coll.iterator().hasNext()){ |
| System.out.println(coll.iterator().next()); |
| } |
(4)删除集合中的tom
| Iterator iterator = coll.iterator(); |
| while (iterator.hasNext()){ |
| Object obj = iterator.next(); |
| if ("Tom".equals(obj)){ |
| iterator.remove(); |
| } |
| } |
5.foreach循环
jdk 5.0新增,遍历集合和数组
| for (Object obj : coll) { |
| System.out.println(obj); |
| } |
| |
| int[] arr = {1, 2, 3, 4, 5, 6}; |
| for (int i : arr) { |
| System.out.println(i); |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本