目录
List接口
List接口概述
List接口成员方法
1.添加方法
2.删除功能
3.获取功能
4.修改功能
List集合特有的迭代器
ListIterator接口的成员方法
List集合特有遍历方式
List接口
List接口概述
有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。 与 set 不同,列表通常允许重复的元素。
List接口成员方法 1.添加方法
void add(int index,E element) 将指定的元素插入此列表中的指定位置(可选操作)
import java.util.ArrayList;import java.util.List;public class CollectionTest6 { public static void main(String[] args) { //创建List集合对象 List list =new ArrayList(); //向集合添加元素 list.add("java"); list.add("hadoop"); list.add("bigdata"); System.out.println(list); //void add(int index,E element) 将指定的元素插入此列表中的指定位置(可选操作) list.add(1,"hive"); //在索引为1的位置上(hadoop)插入hive System.out.println(list); }}
插入元素索引超过集合长度会报错(范围:index>=0&&index <=list.size() )
2.删除功能
E remove(int index) 删除该列表中指定位置的元素 (可选操作)
System.out.println(list); //原集合 //E remove(int index) 删除该列表中指定位置的元素 (可选操作) System.out.println(list.remove(3)); //删除索引为3的元素,有返回值,可输出,返回被删除的元素 System.out.println(list);
3.获取功能
E get(int index) 返回此列表中指定位置的元素
System.out.println(list);//原集合 //E get(int index) 返回此列表中指定位置的元素 System.out.println(list.get(2)); //返回索引为2的元素,原集合不变 System.out.println(list);
4.修改功能
E set(int index,E element) 用指定的元素(可选操作)替换此列表中指定位置的元素
System.out.println(list);//原集合 //E set(int index,E element) 用指定的元素(可选操作)替换此列表中指定位置的元素 Object o = list.set(1, "hello"); System.out.println(o); //返回的是被替换的那个元素 System.out.println(list);
List集合特有的迭代器
ListIterator listIterator() 返回列表中的列表迭代器(按适当的顺序)
ListIterator继承Iterator接口,所以内部有hasNext()和next()方法 【Collection,Iterator接口 】
例:用List特有迭代器遍历字符串
public class ListTest1 { public static void main(String[] args) { //创建List集合对象 List list =new ArrayList(); //向集合添加元素 list.add("java"); list.add("hive"); list.add("bigdata"); list.add("hadoop"); list.add("python"); //获取迭代器对象 ListIterator listIterator() 返回列表中的列表迭代器(按适当的顺序) ListIterator listIterator = list.listIterator(); //遍历 while(listIterator.hasNext()){ //向下转型,获取元素的方法(元素的长度) String s =(String) listIterator.next(); System.out.println(s+" 长度:"+s.length()); } }}
ListIterator接口的成员方法
E previous() 返回列表中的上一个元素,并向后移动光标位置。可以反复调用此方法以向后遍历列表,或者与调用next()进行混合来回。(若最先使用会报错,因为前面无元素)
boolean hasPrevious() 遍历反向列表,列表迭代器有多个元素 返回true,否则false (与hasnext()相对)
例:修改List迭代器反向遍历
while(listIterator.hasNext()){ //向下转型,获取元素的方法(元素的长度) String s =(String) listIterator.next(); System.out.println(s+" 长度:"+s.length()); } System.out.println("=======分界线=========="); while(listIterator.hasPrevious()){ String s= (String) listIterator.previous(); System.out.println(s+" 长度:"+s.length()); }
所以要想用此方法反着遍历需先正着遍历,将指针移动到末尾。
List集合特有遍历方式
因为List集合中有 E get(int index) 的获取方法,所以我们可以利用size()和get()方法结合来遍历。
例:List集合特有遍历方式
import java.util.ArrayList;import java.util.List;public class ListTest2 { public static void main(String[] args) { //创建List集合对象 List list=new ArrayList (); //添加元素 list.add("java"); list.add("sad23"); list.add("wre32323"); list.add("rr333"); //利用size()和get()方法遍历 for (int i=0;i 案例:存在一个集合,其中存放String类型数据,如果该集合元素里有“hive”,添加一个“true”。 方法一:迭代器遍历 import java.util.ArrayList;import java.util.List;import java.util.ListIterator;public class ListTest3 { public static void main(String[] args) { //创建List集合对象 List list = new ArrayList (); //添加元素 list.add("wa2323"); list.add("ds3434"); list.add("hive"); list.add("g444"); list.add("sd3s3"); //方法a:用list特有迭代器ListIterator遍历 //获取迭代器对象 ListIterator listIterator = list.listIterator(); while (listIterator.hasNext()){ Object next = listIterator.next(); //向下转型获取元素 String s=(String) next; //判断是否有“hive” if("hive".equals(s)){ listIterator.add("true"); //如果有,此时指针正好指向hive,所以将会在hive后添加true } } System.out.println(list); 方法二:List集合特有方法遍历 //方法b:利用List集合特有的遍历方式(size()和get()方法结合) for (int i=0;i