集合
1.集合概述
1.1 集合是什么
- 集合是一种容器,可以容纳其它类型的数据,数组也是一种集合
- 集合在开发中用的比较多
1.2 集合存储的数据
- 集合只能存储引用类型数据
- 内存图
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7100lLKt-1622043685981)(/Users/mac/Library/Containers/com.tencent.qq/Data/Library/Caches/Images/812D9EF66D0F7F3252170FE06947D243.png)]](https://img-blog.csdnimg.cn/20210526234227244.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ5NjkwOTgz,size_16,color_FFFFFF,t_70)
1.3 集合的数据结构
- 使用不同的集合等同于使用不同的数据结构
- 不同的集合使用的数据结构不同
- new ArriList() 创建一个底层是数组的集合
- new LinkedList() 创建一个底层是链表的集合
1.4 集合的包和接口
- 集合的包和接口都在java.util下
1.5 集合的继承结构图
- 一定要背会
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nQY3vFZA-1622043685983)(/Users/mac/Library/Containers/com.tencent.qq/Data/Library/Caches/Images/8351C62DF8BF6FAD0EA7A888113DC439.png)]](https://img-blog.csdnimg.cn/2021052623425027.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ5NjkwOTgz,size_16,color_FFFFFF,t_70)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o3zT579I-1622043685984)(/Users/mac/Library/Containers/com.tencent.qq/Data/Library/Caches/Images/D84598CB62717EE783F76162E215E16D.jpg)]](https://img-blog.csdnimg.cn/20210526234300618.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ5NjkwOTgz,size_16,color_FFFFFF,t_70)
1.6 两大类集合
- 单个方式存储 超级父接口:java.util.Collection
- 键值对的方式存储 超级父接口: java.util.Map
2.Collection接口中常用方法
2.1 Collection接口中存放的元素
- Collection接口中在没有使用泛型之前,可以存放Object的所有子类
- 使用泛型后只能存储某一种特定的类型
2.2 Collection接口中的常用方法
- add()方法
- clear()方法
- size()方法
- contains()方法
- remove()方法
- isEmpty()方法
- toArray()方法
import java.util.ArrayList;
import java.util.Collection;
public class Main {
public static void main(String[] args) {
Collection c=new ArrayList();
c.add(1000);
c.add(3.14);
c.add(true);
c.add(new Object());
System.out.println("集合中的元素个数: "+c.size());
c.clear();
System.out.println("集合中的元素个数: "+c.size());
c.add("hello");
c.add("world");
c.add("123");
boolean flag=c.contains("hello");
System.out.println(flag);
System.out.println("456");
System.out.println("集合中的元素个数: "+c.size());
c.remove("123");
System.out.println("集合中的元素个数: "+c.size());
c.clear();
System.out.println(c.isEmpty());
c.add("hello");
c.add("world");
c.add("123");
c.add(new Object());
Object[] a=c.toArray();
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}
2.3 Collection接口中的Iterator
- 获取迭代器相当于获取了当前集合的一张快照
- 每次按照快照来进行迭代
- 迭代的时候会将快照和原先的集合进行比对,如果有差别(原集合结构改变),会报错
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
class Main{
public static void main(String[] args) {
Collection c=new ArrayList();
c.add("123");
c.add("456");
c.add("789");
Iterator it=c.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
Collection c1=new HashSet();
System.out.println();
c1.add(100);
c1.add(200);
c1.add(546);
c1.add(100);
c1.add(825);
Iterator it1=c1.iterator();
while(it1.hasNext()){
System.out.println(it1.next());
}
}
}
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jm7hWEc3-1622043685985)(/Users/mac/Library/Containers/com.tencent.qq/Data/Library/Caches/Images/E5C80BB5021D5FAE863DA18694F0B5BC.png)]](https://img-blog.csdnimg.cn/20210526234328698.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ5NjkwOTgz,size_16,color_FFFFFF,t_70)
import java.util.ArrayList;
import java.util.