java集合框架
前言:本节我们来学习java集合框架
1.0 什么是集合
集合便是对象的容器,定义了多个对象进行操作的常用方法
集合和数组的区别:
1 数组长度固定,集合长度不固定
2 数组可以存储基本类型和引用类型,集合只能存储引用类型。
我们在使用集合时,需要导入java.utill的所有内容
1.1 Collection体系集合
collection是该体系的根节点,它的子节点由List和Set
List接口的特点:有序,有下标,元素可重复,有序,即存储顺序就是元素插入到list中的顺序,
且可以根据下标来根据顺序进行访问。
Set接口的特点:无序,无下标,元素不能重复。
上面的这三者是接口,规定了要实现的内容,具体的内容必须由接口的子类来实现,所以上面这
三者是无法实例化的。我们来看一下正Collection体系的图:
1.2 Collection父接口
该接口的方法:
1. 添加功能
boolean add(E e)
添加一个元素
boolean addAll(Collection c)
添加一批元素
2. 删除功能
boolean remove(Object o)
删除一个元素
3. 判断功能
boolean contains(Object o)
判断集合是否包含指定的元素
boolean isEmpty()
判断集合是否为空(集合中没有元素)
4. 获取功能
int size()
获取集合的长度
5. 转换功能
Object[] toArray()
把集合转换为数组
还有其他方法请查看api
需要注意的是,collection是接口,我们无法直接实例化,可以借助指向其子类的对象来实例
化,此时我们称其为实现类这就体现了java的多态特点,比如我们可以指向ArrayList,由于下
标是在其实现类中实现的,所以不能直接使用下标进行访问,如果我们利用类型转化将其转化
为ArrayList,就可以使用下标对其进行访问,由之前多态的学习我们可以知道,对于在子类中
被重载的方法,如果我们用父类执行子类的对象,那么这些方法可以在父类中使用,对于接口
也是这样。
对于集合的遍历,我们可以使用增强for,也可以使用迭代器,java中提供了迭代器接口,由不同
的类进行了实现。迭代器接口定义了三个方法 hasNext()
Next()
remove()
第一个方法是判断集合中是否存在下一个元素,第二个方法是将引用转向下一个元素,第三个
方法是用于迭代器中的对集合中元素进行删除的方法。
import java.util.*;
import com.corejava.test.*;
public class Main {
public static void main(String[] args) {
Collection collection = new ArrayList<>();
collection.add("1");
collection.add("2");
System.out.println(collection.size());
collection.remove("1");
collection.add("dada");
System.out.println(collection);
// 增强for
for (Object o : collection) {
System.out.println(o);
}
// 迭代器
Iterator i = collection.iterator();
while (i.hasNext()) {
System.out.println(i.next());
i.remove();
}
}
}
i.remove()
是删除迭代器当前指向的函数。不能直接使用colle