List接口是collection的子接口,List接口也是一个抽象类。实现List的接口常用的类有Arraylist和Linkedlist,还有一个Vector。这些类都可以容纳所有类型的对象,允许重复且有序
集合体系:
* ———Collection 单例集合 的根接口
* ———— List 实现List接口的类,特点是 有序的,可重复的
* ———— Set 实现Set接口的类,特点是 无序的,不可重复的
*
* 实现类 : ArrayList, LinkedList
*
* List 接口中特有的方法:
*
* 增
* void add(int index, E element)
* boolean addAll(int index, Collection
public class Demo1 {
public static void main(String[] args) {
List list = new ArrayList();
list.add("张三");
list.add("李四");
list.add("王五");
//1.增
list.add(1, "赵六");
//list.add(5, "jack"); 运行的时候产生 索引越界的异常
System.out.println(list);
List list1 = new ArrayList();
list1.add("张三");
list1.add("tom");
list1.add("lily");
//在指定的 索引位置插入 一个新的集合
list.addAll(2, list1);
//2.删
//删除指定索引位置的位置
list.remove(1);
System.out.println(list);
//3.改
//将指定索引位置的元素 用新的元素替代
/*
* 参数一 index 要被替换的元素的索引位置
* 参数二Object element 你要替换成这个元素
*
* 返回值 Object 返回的是 被替代掉的元素
* */
Object obj = list.set(1, "赵六");
System.out.println(list);
System.out.println(obj);
//4.查
//(1)根据指定的 索引位置 获取到元素
Object res = list.get(2);
System.out.println(res);
list.set(2, "张三");
//(2)根据元素 去获取到索引位置 indexOf 是从前往后找,找到第一个
int index = list.indexOf("张三");
System.out.println(index);
//(3)获取 这个元素 最后出现的位置 lastIndexOf()
index = list.lastIndexOf("张三");
System.out.println(index);
//(4)获取 指定范围的 子集合
// 0 - 5 子集合2 -4
/*
* 参数一: 截取索引的开始范围 包含起始索引的元素
* 参数二:截取索引的 结束范围 不包含结束索引的元素
*
* 返回值: 指定的索引范围内的 所有元素 的新集合 (注意实际类型是 实现类类型)
*
* 注意 : 索引不要越界的问题
* */
List newList = list.subList(2, 6);
System.out.println(list);
System.out.println(newList);
}
}
Arraylist:
Arraylist是对数组的升级,实现了动态数组,和数组采用的是相同的储存方式,在内存中分配连续的地址值优点就是遍历元素和随机访问元素效率高,插入和删除某个元素比较慢。
也是List的实现类,方法可以继承自collection和List,同时也拥有自己的一些方法
//添加元素
boolean add(Object o)
//添加元素到指定的位置
void add(int index,Object o)
//查看元素中的个数
int size()
//返回指定的索引位置处的元素,取出的是object型需强制转换
Object get(int index)
//判断集合中是否包含此元素
boolean contains(Object o)
//删除元素
boolean remove()
//删除指定的元素
Object remove(int index)
Arraylist的三种遍历方式
1.get方式遍历数组
public static void main(String[] args) {
List list = new ArrayList();
list.add("张三");
list.add("李四");
list.add("王五");
list.add(1, "赵六");
//通过get遍历数组
for(int i = 0;i<list.size();i++)
{
System.out.println("元素有:" + list.get(i));
}
2.通过toarray遍历元素
//通过toarray方式转换成对象数组再进行遍历
Object[] o = new list.toArray();
for(int i = 0, i<o.length; i++)
{
System.out.println("元素是:" + o[i]);
}
3.通过迭代器遍历
//通过迭代器Iterator进行遍历
//先获取无参迭代器,正序迭代
ListIterator it = list.listIterator();
while(it.hasnext()){
System.out.println(it.next());
}
//逆序迭代
//因为是逆序迭代,所以我们就必须先执行到元素的最后一个,然后倒叙获取元素
ListIterator it1 = list.listIterator(list.size());
while(it1.hasnext())
{
System.out.println(it1.next());
}
还有一个linkedlist实现类没有写完,后续再补