美文网首页
List接口

List接口

作者: Jycoding | 来源:发表于2022-07-23 14:27 被阅读0次

    3.1 概述

    有序的colletion(也称为序列).此接口的用户可以对列表中的每个元素的插入位置进行精确的控制,用户可以根据元素的整数索引(在列表中的位置)来访问元素,并搜索列表中的元素.

    3.2 特点

    元素都有下标

    数据是有序的

    允许存放重复的元素

    3.3 List方法速查表

    package cn.tedu.collection;

    import java.util.ArrayList;

    import java.util.Arrays;

    import java.util.List;

    /**本类用于测试List接口*/

    public class TestList {

        public static void main(String[] args) {

          //1.创建List的多态对象,注意List是接口,不可实例化

          List<String> list = new ArrayList<String>();

          //2.测试继承自Collection中的方法

          list.add("大力娃");//向list集合中存入数据

          list.add("千顺娃");

          list.add("头铁娃");

          list.add("喷火娃");

          list.add("喷水娃");

          list.add("隐身娃");

          list.add("小紫娃");

          System.out.println(list);//查看集合中的元素

    //      list.clear();//清空集合

    //      System.out.println(list);

          System.out.println(list.contains("喷火娃"));//true,判断集合是否包含指定元素

          System.out.println(list.equals("喷水娃"));//false,集合对象与String数据不等

          System.out.println(list.isEmpty());//false,判断集合是否为空

          System.out.println(list.remove("小紫娃"));//移除集合中指定的元素

          System.out.println(list.size());//6,获取集合中元素的个数

          System.out.println(Arrays.toString(list.toArray()));//将集合转成数组

          //3.测试List接口自己的方法--List有序,可以根据索引来操作集合中的元素

          list.add("小蝴蝶");//追加在最后

          list.add(1,"蛇精");//在指定的索引处添加元素

          list.add(3,"小蝴蝶");//在指定的索引处添加元素

          System.out.println(list);

          System.out.println(list.indexOf("小蝴蝶"));//3,获取指定元素第一次出现的索引

          System.out.println(list.lastIndexOf("小蝴蝶"));//8,获取指定元素最后一次出现的索引

          System.out.println(list);

          //根据索引删除元素,并将被删除的元素返回

          System.out.println(list.remove(5));

          System.out.println(list);

          System.out.println(list.get(3));//获取指定索引处的元素

          System.out.println(list.set(7,"蝎子精"));//修改指定索引处元素的值为蝎子精

          System.out.println(list);

          //4.测试集合间的操作

          List<String> list2 = new ArrayList<>();//创建第2个集合

          list2.add("1");//向集合2中添加元素

          list2.add("2");

          list2.add("3");

          list2.add("4");

          System.out.println(list2);//查看集合中的元素

          //将2集合的所有元素添加到list集合中

          System.out.println(list.addAll(list2));

          //将2集合的所有元素添加到list集合的指定位置

          System.out.println(list.addAll(1,list2));

          System.out.println(list);

          //判断list集合中是否包含list2集合中的所有元素

          System.out.println(list.containsAll(list2));

          //移除list集合中属于list2集合中的所有元素

          System.out.println(list.removeAll(list2));

          System.out.println(list);

        }

    }

    package cn.tedu.collection;

    import java.lang.reflect.Array;

    import java.util.ArrayList;

    import java.util.Iterator;

    import java.util.List;

    import java.util.ListIterator;

    /**本类用于进一步测试List接口*/

    public class TestList2 {

        public static void main(String[] args) {

            //1.创建List接口的多态对象

            List<String> list = new ArrayList<>();

            //2.向创建好list集合添加元素

            list.add("喜羊羊");

            list.add("美羊羊");

            list.add("懒羊羊");

            list.add("沸羊羊");

            list.add("小肥羊");

            list.add("肥羊卷");

            System.out.println(list);

            //3.测试集合的迭代

            /**集合的迭代方式:

            * 1.for循环

            * 2.高效for循环

            * 3.iterator

            * 4.listIterator

            * */

            //方式一:因为List集合是有序的,元素有下标的,所以可以根据下标进行遍历

            //从哪开始:0  到哪结束:list.size()-1  如何变化++

            for(int i = 0;i<list.size();i++){

                //根据本轮循环遍历到的索引值获取对应的集合元素

                System.out.println(list.get(i));

            }

            System.out.println("************方式一*************");

            //方式二:因为普通for循环遍历效率低,语法复杂,所以使用高效for来遍历

            //格式for(本轮遍历到的元素类型 元素名 :要遍历的内容名){循环体}

            for( String s : list){

                System.out.println(s);

            }

            System.out.println("************方式二*************");

            //方式三:从父接口中继承过来的迭代器iterator

            //1.获取对应的迭代器对象

            Iterator<String> it = list.iterator();

            //2.通过刚刚获取到的迭代器循环迭代集合中的所有元素

            while(it.hasNext()){//判断是否仍有下一个元素可以迭代

                System.out.println(it.next());//打印当前获取到的元素

            }

            System.out.println("************方式三*************");

            /**方式四:listIterator属于List接口特有的迭代器

            * Iterator<E>--父接口--hasNext() next()

            * ListIterator<E>--子接口--除了父接口的功能以外

            * 还有自己的特有功能,比如逆序遍历,添加元素等等,但是不常用

            * public interface ListIterator<E>extends Iterator<E>

            * */

            ListIterator<String> it2 = list.listIterator();

            while(it2.hasNext()){

                System.out.println(it2.next());

            }

            System.out.println(list);

            System.out.println("listIterator的逆序遍历:");

            ListIterator<String> it3 = list.listIterator();

            while(it3.hasNext()){//判断是否有下一个元素可迭代

                System.out.println(it3.next());//打印当前迭代到的元素

                if(!it3.hasNext()){//直到迭代器没有下一个元素可迭代--到最后了

                    System.out.println("开始逆序迭代:");

                    while (it3.hasPrevious()){//判断是否有上一个元素可迭代

                        System.out.println(it3.previous());//打印获取到的上一个元素

                    }

                  break;//终止循环,不然会一直从头到尾,再从尾到头迭代

                }

            }

        }

    }

    相关文章

      网友评论

          本文标题:List接口

          本文链接:https://www.haomeiwen.com/subject/llrbirtx.html