List容器特点
-
有序:
-
List中每个元素都有索引标记,可以根据元素的索引标记(在List中的位置)访问元素,从而精确控制这些元素
-
和数组一样有索引下标
-
List的底层实现就是数组
-
-
可重复:
-
List允许加入重复的元素,List允许满足e1.equals(e2)的元素重复加入元素---对象地址相同或者是值相同
-
因为List的底层是数组,所以添加重复的元素在List中的所有地址不一样,所以可以添加重复元素
-
List接口常用的实现类
ArrayList---底层实现是数组
LinkedList---底层使用的是链表
Vector---底层也是数组,但是是线程安全
实例:
public class TestList{
public static void main(String[] args){
test03;
}
/*测试和索引相关的方法*/
public static void test03(){
/*定义一个自己的List,加泛型*/
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
/*
在List源码中有两个add方法
1.传参数和值---插入元素
2.传索引和值---在指定索引处插入元素---链表
*/
System.out.println(list);
/*插入元素*/
list.add(2,"Lucifer");
System.out.println(list);
/*
特点:
1.只插入元素,List后面的元素往后移
2.相当于打断了链表然后重写连接,不删除任何元素
用于数据库的增删改查的增
*/
/*移除元素*/
list.remove(2);
System.out.println(list);
/*
插入的元素被移除出List
*/
/*set方法*/
list.set(2,"JunkingBoy");
System.out.println(list);
/*
直接将传入的索引位置处的值改成后续传入的值
*/
/*get方法*/
System.out.println(list.get(2));
/*
直接返回List中2号索引位置处的值
*/
list.add("C");
list.add("B");
list.add("A");
System.out.println(list);
System.out.println(list.indexOf("B")); //里面有两个B,返回的是第一个出现的B的索引下标
/*
如果字符不存在返回-1
*/
System.out.println(list.lastIndexOf("B"));
}
}