java.util包中提供了一些集合,这些集合又被称为容器。提到容器不难想到数组,集合与数组的不同之处时,数组的长度是固定的,集合的长度是可变的;数组用来存放基本数据类型的数据,集合用来存放对象的引用。常用的集合有:List集合,set集合和map集合,其中List集合与set集合继承了Collection接口,各接口还提供了不同的实现类。
Collection接口是层次结构中的根接口。构成Collection的单位称为元素。Collection接口通常不能直接使用,但该接口提供了添加元素,删除元素,管理数据的方法。由于list接口与set接口都直接继承了Collection接口,因此这些方法对List和set集合是通用的。
Collection接口
Collection接口的常用方法
方法 功能描述
add(E e) 将制定的对象添加到各集合中
remove(Object o) 将制定的对象从该集合中移除
isEmpty() 返回Boolean值,用于判断当前集合是否为空
iterator() 返回再次Collection的元素上进行迭代的迭代器。用于遍历集合中的对象
size() 返回int值,获取该集合中的元素的个数
如何遍历集合中的每个元素呢》
通常遍历集合,都是通过迭代器(iterator)来实现。Collection接口中的iterator()方法可返回在此Collection进行迭代的迭代器。
public class Collection接口 {
public static void main(String[] args) {
Collection<String>list = new ArrayList<>();//实例化集合类对象
list.add("a");
list.add("b");
list.add("c");
Iterator<String>iterator = list.iterator();//创建迭代器
while (iterator.hasNext()){//判断是否有下一个元素
String str = iterator.next();//获取集合中的元素
System.out.println(str);
}
}
}
结果:
List集合
List集合包括List接口以及List接口的所有实现类。List集合中的元素允许重复,各元素的顺序就是对象插入的顺序。类似java数组,用户可通过使用索引(元素在集合中的位置)来访问集合中的元素。
List接口继承了Collection接口,因此包含了Collection中的所有方法,因此,List接口还定义了以下两个方法。
get(int index):获取指定索引位置的元素
set(int index,Object obj):将集合中指定的索引位置的对象修改为指定的对象
List接口的常用实现类有ArrayList与LinkedList.
ArrayList类实现了可变的数组,允许保存所有元素,包括null,并可以根据索引位置对集合进行快速的随机访问:缺点是向指定的索引位置插入对象或删除对象的速度较慢。
LinkedList类采用链表结构保存对象。这种结构的优点是便于向集合中插入和删除对象,需要向集合中插入,删除对象时。使用LinkedList类实现的List集合的效率较高;但对于随机访问集合中的对象,使用LinkedList类实现的效率较低。
使用List集合时通常声明为List类型,可通过不同的实现类来实例化集合。
public class List集合 {
public static void main(String[] args) {
List<String>list = new ArrayList<>();//创建集合对象
list.add("a");
list.add("b");
list.add("c");
int i = (int)(Math.random()*(list.size()-1));//获得0-2之间的随机数
System.out.println("随机获取数组中的数:"+list.get(i));
list.remove(2);//将指定索引位置的元素从集合中移除
System.out.println("移除后数组中的元素:");
for (int j = 0;j<list.size();j++){
System.out.println(list.get(j));
}
}
}
结构: