Java 集合
一、 Collection集合
1、 集合概述
集合和数组都是容器
数组的特点:
-
数组定义完成并启动后,类型确定,长度固定
-
在进行增删数据操作的时候,数组是不太适合的,增删数据都需要放弃原有数组或者移位
集合的特点:
- 集合时存储对象数据的一种容器
- 集合的大小不固定,启动后可以动态变化,类型也可以选择不固定,集合更像气球
- 集合非常适合做元素的增删操作
- 注意:集合中只能存储引用类型数据,如果要存储基本类型数据可以选择包装类
Collection集合体系
Collection 集合特点:
- List
- 添加元素是有序的、可重复、有索引
- Set
- 添加的元素是无序的、不重复、无索引
集合对于泛型的支持:
-
集合都是支持泛型的,可以在编译阶段约束集合只能操作某种数据类型
// 存储基本数据类型使用包装类 Collection<Integer> list = new ArrayList<>();
集合和泛型不支持基本类型,只支持引用数据类型
2、 常用API
Collection是单例集合的祖宗接口,它的功能是全部单例集合都可以继承使用的
package collection;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
public class Main {
public static void main(String[] args) {
// HashSet:添加的元素都是无序,不重复,无索引的
Collection<String> list = new ArrayList<>();
// 添加元素:添加成功返回true
list.add("java");
list.add("python");
list.add("C");
System.out.println(list);
// 清空集合的元素
// list.clear();
// 判断集合是否为空,是则返回true
System.out.println(list.isEmpty());
// 获取集合的大小
System.out.println(list.size());
// 判断集合中是否包含某个元素
System.out.println(list.contains("python"));
// 删除某个元素:如果有多个重复元素,默认删除前面的第一个
System.out.println(list.remove("C"));
// 把集合转换成数组
Object[] arrs = list.toArray(); // 注意不能集合里面不能完全确定一种数据类型
System.out.println("数组内容:" + Arrays.toString(arrs));
System.out.println("-------------------扩展-----------------------");
Collection<String> c1 = new ArrayList<>();
Collection<String> c2 = new ArrayList<>();
c2.addAll(c1); // 把C1中的元素全部导入c2中
}
}
3、 集合的遍历
3.1 迭代器
迭代器遍历的概述:
- 遍历就是一个一个的把容器中的元素访问一遍
- 迭代器在Java中的代表是Iterator,迭代器是集合的专用遍历方式
集合获取迭代器
方法名称 | 说明 |
---|---|
Iterator<E> iterator() |
返回集合中的迭代器对象,该迭代器默认指向当前集合的首地址 |
迭代器常用方法
方法名称 | 说明 |
---|---|
boolean hasNext() |
询问当前位置是否有元素存在,存在返回true |
E next() |
获取当前位置的元素,并同时将迭代器对象移向下一个位置,注意防止取出越界 |
package collection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Main {
public static void main(String[] args) {
Collection<String> lis = new ArrayList<>();
lis.add("李华");
lis.add("赵华");
lis.add("张华");
lis.add("小华");
System.out.println(lis);
// 得到当前集合的迭代器对象
Iterator<String> it = lis.iterator();
while (it.hasNext()) {
// 遍历迭代器对象
System.out.println(it.next());
}
}
}
3.2 for
增强for循环
- 增强for循环:既可以遍历集合也可以遍历数组
- 它是JDK5之后出现的,其内部是一个Iterator迭代器,遍历集合相当于是迭代器的简化写法
- 实现Iterable接口的类才可以使用迭代器和增强for,Collection接口已经实现了Iterable接口
格式:
for (元素数据类型 变量名: 数组或者Collection集合) {
// 在此处使用变量即可,该变量就是元素
}
package collection;
import java.util.ArrayList;
import java.util.Collection;
public class Main {
public static void main(String[] args) {
Collection<String> lis = new ArrayList<>();
lis.add("李华");
lis.add("赵华");
lis.add("张华");
lis.add("小华");
System.out.println(<