List集合
-
特点:
- 有序:存和取的元素顺序一致
- 有索引:可以通过索引操作元素
- 可重复:存储的元素可以重复
一、List集合的特有方法
-
Collection的方法List都继承了
-
List集合因为有索引,所以多了很多索引操作的方法。
方法名称 说明 void add(int index,E element) 在此集合中指定的位置插入指定的元素 E remove(int index) 删除指定索引处的元素,返回被删除的元素 E set(int index,E element) 修改指定索引处的元素,返回被修改的元素 E get(int index) 返回指定索引处的元素 -
案例一:
import java.util.ArrayList; import java.util.List; public class A01_ListDemo1 { public static void main(String[] args) { /* List系列集合独有的方法: void add(int index,E element) 在此集合中指定的位置,插入元素 E remove(int index) 删除指定索引处的元素,返回被删除的元素 E set(int index,E element) 修改指定索引处的元素,返回被修改的元素 E get(int index) 返回指定索引处的元素 */ //1.创建一个集合 List<String> list = new ArrayList<>(); //2.添加元素 list.add("aaa"); list.add("bbb"); list.add("ccc"); //void add(int index,E element) 在此集合中指定的位置,插入元素。 //细节:原来索引上的元素会依次往后移。 list.add(1,"good"); //E remove(int index) 删除指定索引处的元素,返回被删除的元素。 String remove = list.remove(0); System.out.println("删除的元素:"+remove); //E set(int index,E element) 修改指定索引处的元素,返回被修改的元素。 String result = list.set(0,"GOOD"); System.out.println("被修改的元素:"+result); //E get(int index) 返回指定索引处的元素。 String s = list.get(0); System.out.println("获取的元素"+s); //3.打印集合 System.out.println(list); } }
-
案例二:
package a02mylist; import java.util.ArrayList; import java.util.List; public class A02_ListDemo2 { public static void main(String[] args) { //List系列集合中的两个删除的方法 //1.直接删除元素 //2.通过索引进行删除 //1.创建集合并添加元素 List<Integer> s = new ArrayList<>(); s.add(1); s.add(2); s.add(3); //2.删除元素 //请问:此时删除的是1这个元素,还是1索引上的元素? //为什么? //因为在调用方法的时候,如果方法出现了重载的现象。优先调用,实参和形参类型一致的那个方法。 //s.remove(1); //解决:手动装箱,手动把基本数类型1,变成Integer类型 Integer i = Integer.valueOf(1); s.remove(i); System.out.println(s); } }
二、List集合的遍历方式
-
迭代器遍历
-
列表迭代器遍历
-
增强for遍历
-
Lambda表达式遍历
-
普通for循环遍历(因为List集合存在索引)
-
案例:
package a02mylist; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.ListIterator; import java.util.function.Consumer; public class A03_ListDemo3 { public static void main(String[] args) { /* List系列集合的五种遍历方式: 1.迭代器 2.列表迭代器 3.增强for 4.Lambda表达式 5.普通for循环 */ //1.创建并添加元素 List<String> list = new ArrayList<>(); list.add("aaa"); list.add("bbb"); list.add("ccc"); //1.迭代器 /* Iterator<String> it = list.iterator(); while(it.hasNext()){ String str = it.next(); System.out.println(str); }*/ //2.增强for /*for (String s : list) { System.out.println(s); }*/ //3.Lambda表达式 /* list.forEach(new Consumer<String>() { @Override public void accept(String s) { System.out.println(s); } }); //化简 list.forEach(s-> System.out.println(s)); //化简2 list.forEach(System.out::println);*/ //普通for /*for (int i = 0; i < list.size(); i++) { //i:依次表示集合中每一个索引 String s = list.get(i); System.out.println(s); }*/ //5.列表迭代器 //获取一个列表迭代器对象,里面的指针默认也是指向零索引的。 //额外添加了一个方法:在遍历过程中,可以添加元素。 ListIterator<String> it = list.listIterator(); while (it.hasNext()){ String str = it.next(); if ("bbb".equals(str)){ it.add("qqq"); } System.out.println(str); } System.out.println(list); } }
三、五种遍历方式对吧
- 迭代器遍历:在遍历的过程中需要删除元素,请使用迭代器。
- 列表迭代器:在遍历过程中需要添加元素,请使用列表迭代器。
- 增强for遍历和Lambda表达式:仅仅想遍历,那么使用增强for循环或Lambda表达式
- 普通for,如果遍历的时候想操作索引,可以用普通for。