java.util包里提供了集合类。这些集合类又被叫做容器。其实数组也是容器,但是集合与数组不同的地方在于:
数组是定长的,而集合是不定长的;
数组只能存放一些基本类型的数据(int string float double)等,但是集合类是可以存放对象数据的
因此集合是加强版的数组,在日常开发中,集合也是经常被用到
常用的集合有List集合,Set集合,map集合,其中List与set继承了Collection接口
可以用如下图来表示
Collection接口Collection接口是层次结构中的根接口。构成collection接口的成为元素。collection接口不能直接使用,但是自身提供了添加元素,删除元素,管理数据的方法。由于List Set 两个接口都继承了collection接口,因此对于List Set 两个接口也是可以使用collection的方法。
| 方法 | 功能描述 |
|---|---|
| add(E e) | 将指定的对象添加到容器中 |
| remove(Object o) | 将指定对象从容器中删除 |
| isEmpty() | 返回boolBean值,用于判断当前集合是否为空 |
| iterator() | 返回在此Collection的元素上进行迭代的迭代器,用于遍历元素中的对象 |
| size() | 返回Int型的数值,获取该集合中的元素个数 |
集合遍历元素?通常用iterator(迭代器)来实现。Collection接口的iterator()方法可返回此Collection进行迭代的迭代器。
eg:
import java.util.*;
public class Muster {
public static void main(String [] args){
Collection list =new ArrayList();
list.add("a");
list.add("b");
list.add("c");
Iterator it=list.iterator();
while (it.hasNext()){
String str= (String)it.next();
System.out.println(str);
}
}
}
输入:
a
b
c
注意:it.next()返回是Object类型。因此需要String强转一下
List接口List接口是继承了Collection接口,因此继承collection的所有方法。List接口还定义了两个非常重要的方法
get(int index):获得指定索引位置的元素
set(int index,Object obj):将集合指定索引位置的对象修改为指定的对象
List接口常用实现类是ArrayList 与 linkedList。
ArrayList类实现了可变数组,允许保存所有元素,包括null。并可以根据索引位置对集合进行快速的随机访问;缺点是向指定的索引位置插入或者删除对象速度较慢
linkedList类是利用链表结构存储数据,这种结构插入或者删除数据比较方便,但是查询数据不如Arraylist那么快。
| ArrayList | linkedList |
|---|---|
| 优点:查询快,可以保存所有元素(null) | 优点:插入删除快 |
| 缺点:插入,删除慢 | 缺点:查询速度慢 |
实例化:
Listarraylist =new ArrayList<>(); List linkedlist =new linkedList<>();
为泛型
eg:
import java.util.ArrayList;
import java.util.List;
public class Gather {
public static void main(String [] args){
List list1=new ArrayList();
list1.add("a");
list1.add("b");
list1.add("c");
int i =(int) (Math.random()*list1.size());
System.out.println("随机获取数组中的元素是"+list1.get(i));
list1.remove(2);
System.out.println("将索引为2的元素移除后,集合是:");
for (int j=0;j



