集合
Java集合用于存储数量不等的对象,主要分为Set、List、Queue、Map四种体系,亦是四种接口。Set代表无序、不可重复的集合;List有序、可重复的集合;Queue代表队列类型的数据结构;Map代表具有映射关系的集合。
集合和数组的区别
- 存储数据类型:数组可以存储基本类型数据;集合只能存储对象(对象引用)
- 存储数量:数据长度固定;集合长度不固定
泛型:集合即一种容器。在Java5之前,对象被存进集合后会丢失对象的具体类型,导致每次取出时都需要强转;Java5增加的泛型的支持,是的集合可以记住容器中的对象类型,使得编写代码更加简洁。
集合体系结构
集合体系结构分为两类:Collection和Map。二者是Java集合框架的根接口,Map主要继承结构结构如下:
Collection接口:
说明:以上主要列出常用的集合类。
Collection接口操作方法
Collection接口的操作方法主要是增加元素、删除元素、查询元素等
增加元素
- boolean add(Object obj)
- boolean addAll(Collection c)
删除元素
- boolean remove(Object obj)
- boolean removeAll(Collection c)
- boolean retainAll(Collection c):取当前集合和c集合的交集,其余删除
- void clear():删除所有元素
查询元素
- boolean contains(Object obj):判断是否包含
- boolean containAll(Collection c):判断是否包含所有
- Iterator iterator():获取该集合的迭代器,用于遍历集合所有元素
其他方法:
- boolean isEmpty():判断集合是否为空
- int size():获取集合中元素个数
- Object[] toArray():将集合转为数组
遍历Collection集合元素
foreach迭代
import java.util.ArrayList;
import java.util.Collection;
public class CollectionTest {
public static void main(String[] args) {
Collection<String> c = new ArrayList();
for (String str:c) {
System.out.println(str);
}
}
}
Iterator迭代器
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class CollectionTest {
public static void main(String[] args) {
Collection<String> c = new ArrayList();
Iterator<String> iterator = c.iterator();
while (iterator.hasNext()){
String str = iterator.next();
iterator.remove();
}
}
}
说明:
- foreach迭代过程中不能删除集合中元素,否则会导致集合索引重新排序,结果导致有些元素没有遍历到
- 遍历集合过程中删除元素使用迭代器Iterator的remove()方法