List集合
1. List接口介绍
java.util.List接口继承自Collection接口,是单列集的一个重要分支。一般将实现了List接口的对象称为List集合。
List接口特点:
LIst集合的所有元素以线性方式进行存储。
它是一个存取有序的集合。
它是一个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组的索引是一个道理)。
集合中可以有重复的元素,通过元素的equals方法,来比较是否为重复的元素。
List集合类中元素有序、且可重复。这就像银行门口客服,给每一个来办理业务的客户分配序号:第一个来的是“张三”,客服给他分配的是0;第二个来的是“李四”,客服给他分配的1;以此类推,最后一个序号应该是“总人数-1”。
1 public class Demo17 { 2 public static void main(String[] args){ 3 //List接口:有下标,有序(新增顺序和遍历顺序一致),允许重复记录 4 //List接口的独有方法 5 //创建List集合对象 6 List list = new ArrayList(); 7 //往尾部添加指定元素 8 list.add("红大娃"); 9 list.add("橙二娃"); 10 list.add("黄三娃"); 11 System.out.println(list); 12 13 List list2 = new ArrayList(); 14 list2.add("绿四娃"); 15 list2.add("蓝五娃"); 16 System.out.println(list2); 17 18 list.addAll(list2); 19 System.out.println(list); //把list2集合中的所有元素,导入到list中 20 21 List list3 = new ArrayList(); 22 list3.add("老爷爷"); 23 list3.add("穿山甲"); 24 list.addAll(1,list3); // 指定索引新增一个整个集合中所有的元素 25 System.out.println(list); 26 } 27 }
1 [红大娃, 橙二娃, 黄三娃] 2 [绿四娃, 蓝五娃] 3 [红大娃, 橙二娃, 黄三娃, 绿四娃, 蓝五娃] 4 [红大娃, 老爷爷, 穿山甲, 橙二娃, 黄三娃, 绿四娃, 蓝五娃]
(2)获取元素
-
-
List subList(int fromIndex, int toIndex)
1 public class Demo17 { 2 public static void main(String[] args){ 3 List list = new ArrayList(); 4 //往尾部添加指定元素 5 list.add("红大娃"); 6 list.add("橙二娃"); 7 list.add("黄三娃"); 8 list.add("绿四娃"); 9 list.add("蓝五娃"); 10 System.out.println(list); 11 12 String s = (String)list.get(1); //获取指定下标元素 13 System.out.println(s); 14 15 System.out.println(list.subList(2, 4)); // 获取指定下标范围内的元素 16 } 17 }
运行结果:
[红大娃, 橙二娃, 黄三娃, 绿四娃, 蓝五娃]
橙二娃
[黄三娃, 绿四娃]
(3)获取元素索引
-
-
int lastIndexOf(Object obj)
1 public class Demo17 { 2 public static void main(String[] args){ 3 List list = new ArrayList(); 4 //往尾部添加指定元素 5 list.add("红大娃"); 6 list.add("橙二娃"); 7 list.add("黄三娃"); 8 list.add("橙二娃"); 9 list.add("绿四娃"); 10 System.out.println(list); 11 12 System.out.println(list.indexOf("黄三娃")); //获取"黄三娃"下标 13 System.out.println(list.lastIndexOf("橙二娃")); // 返回对象"橙二娃"在List集合中最后一次出现的位置索引 14 } 15 }
运行结果:
[红大娃, 橙二娃, 黄三娃, 橙二娃, 绿四娃, 蓝五娃]
2
3
(4)删除和替换元素
1 public class Demo17 { 2 public static void main(String[] args){ 3 List list = new ArrayList(); 4 //往尾部添加指定元素 5 list.add("红大娃"); 6 list.add("橙二娃"); 7 list.add("黄三娃"); 8 list.add("橙二娃"); 9 list.add("绿四娃"); 10 System.out.println(list); 11 12 System.out.println(list.remove(2)); //删除索引位置为2的元素 "黄三娃" 13 list.set(0,"葫芦小金刚"); // "红大娃"替换为"葫芦小金刚" 14 System.out.println(list); 15 } 16 }
运行结果:
[红大娃, 橙二娃, 黄三娃, 橙二娃, 绿四娃]
黄三娃
[葫芦小金刚, 橙二娃, 橙二娃, 绿四娃]
3. List接口的实现类们
ArrayList:动态数组
Vector:动态数组
LinkedList:双向链表
-
-
void set(Object obj):通过迭代器替换正迭代的元素
-
void remove():通过迭代器删除刚迭代的元素
-
boolean hasPrevious():如果以逆向遍历列表,往前是否还有元素。
-
Object previous():返回列表中的前一个元素。
-
int previousIndex():返回列表中的前一个元素的索引
-
boolean hasNext()
-
Object next()
-