目录

List接口

List接口概述

List接口成员方法

1.添加方法

2.删除功能

3.获取功能

4.修改功能

List集合特有的迭代器

 ListIterator接口的成员方法

 List集合特有遍历方式


List接口

java 接口接收list集合参数 java中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);
    }
}

java 接口接收list集合参数 java中list接口_大数据_02

   插入元素索引超过集合长度会报错(范围: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);

java 接口接收list集合参数 java中list接口_大数据_03

3.获取功能

E get(int index) 返回此列表中指定位置的元素

System.out.println(list);//原集合
        //E get(int index) 返回此列表中指定位置的元素
        System.out.println(list.get(2)); //返回索引为2的元素,原集合不变
        System.out.println(list);

java 接口接收list集合参数 java中list接口_big data_04

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);

java 接口接收list集合参数 java中list接口_java 接口接收list集合参数_05

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());
        }
    }
}

java 接口接收list集合参数 java中list接口_big data_06

 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());
        }

java 接口接收list集合参数 java中list接口_java 接口接收list集合参数_07

 所以要想用此方法反着遍历需先正着遍历,将指针移动到末尾。

 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<list.size();i++){
            //获取list集合中每一个元素
            Object o = list.get(i);
            //向下转型,获取元素的方法(字符串的长度)
            String s=(String) o;

            System.out.println(s+" 长度"+s.length());
        }
    }
}

java 接口接收list集合参数 java中list接口_java 接口接收list集合参数_08

案例:存在一个集合,其中存放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);

java 接口接收list集合参数 java中list接口_idea_09

方法二:List集合特有方法遍历

//方法b:利用List集合特有的遍历方式(size()和get()方法结合)
        for (int i=0;i<list.size();i++){
            Object o = list.get(i);
            //向下转型
            String s=(String) o;
            if ("hive".equals(s)){
                list.add("true");     //这里没有用到迭代器,无指针,所以将会在集合末尾添加true
            }
            System.out.println(s+" 长度:"+s.length());
        }

java 接口接收list集合参数 java中list接口_java_10