插入一张集合结构图:
之前学习了集合的存,取,还有重复的概念,到此,集合还是具有一定的局限性,存储对象都是在末尾添加,现在需求是:在存储学生对象的集合中插入一个新的学生。此时Collection 就无法完成,因此我们学习新可以解决这个问题的方法
Collection 下的两个常见子接口: List Set
List 是一个接口:是有序的,带索引的,通过索引就可以精确的操作集合中的元素,元素是可以重复的
代码实例:
package Collection;
import java.util.*;
/*
解决向集合中插入元素,Collection 中只有 追加,删除,获取,equals 获取哈希值的方法
Collection 两个重要子类之一 List
List :是有序的,有索引的,可以有重复元素的
*/
public class ListDemo {
public static void main(String[] args){
//创建集合
List list = new ArrayList();
//1.添加元素
list.add(new Student("wangcai1",20));
list.add(new Student("wangcai2",21));
list.add(new Student("wangcai3",22));
list.add(new Student("wangcai4",23));
//2.插入元素
list.add(1,new Student("xiaohong",18));
//3.删除指定元素
list.remove(0);
//4.获取元素,有索引一般都可以通过索引获取
//Object obj = list.get(4);//当索引错误时,会有运行异常:IndexOutOfBoundsException 数组下标,字符串下标异常都是这个异常的子类
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));//要使用类的特殊方法还是要进行类型向下转化
}
for(Iterator it = list.iterator();it.hasNext();){
Student st = (Student)it.next();
System.out.println(st.toString());
}
}
}
注意
1.List 是Collection 的子接口,父接口具备的方法 List 也具备。
2.List 接口的特有方法,全部都是围绕索引来定义的,索引是从0 开始的
3.List 接口是支持对元素进行CURD 增删改查操作的(其他集合不行)
Object obj = list.get(4);//当索引错误时,会有运行异常:IndexOutOfBoundsException
数组下标,字符串下标异常都是IndexOutOfBoundsException**索引异常** 的子类