目录:

一、特点

二、特有API

三、四种遍历方式

一、特点

分为:ArrayList 和LinkedList ;均有序,可重复,有索引

二、特有API

缘由:List集合因为支持索引,所以多了很多索引操作的独特API,其他Collection的功能List也都                   继承了

(1)Array的特有API

package List.API;

public class ArrayListDemo {
    public static void main(String[] args) {
        //1.创建一个ArrayList的集合对象
        //List: 有序,可重复,有索引的
        java.util.ArrayList<String> list = new java.util.ArrayList<>();
        list.add("名");
        list.add("之");
        list.add("以");
        list.add("父");
        System.out.println(list);//[名, 之, 以, 父]

        //2.在某个索引位置处插入元素
        list.add(2,"Java");
        System.out.println(list);//[名, 之, Java, 以, 父]

        //3.根据索引删除元素,返回被删除的元素值
        System.out.println(list.remove(2));//Java
        System.out.println(list);//[名, 之, 以, 父]

        //4.根据索引获取元素:public E get(int index):返回集合中指定位置的元素
        System.out.println(list.get(2));//以

        //5.修改索引位置处的元素:public E set (int index , E element)
        //返回修改前的数据
        System.out.println(list.set(1,"wu"));//之
        System.out.println(list);//[名, wu, 以, 父]

        //list.clear();
    }
}

(2)LinkedList的特有API

package List.API;

import java.util.LinkedList;

public class LinkedListDemo {
    public static void main(String[] args) {
        //栈
        LinkedList<String> stack = new LinkedList<>();

        //入栈,压栈
        stack.addFirst("第一颗子弹");//addFirst == push  换个包装而已
        stack.push("第二颗子弹");
        stack.addFirst("第三颗子弹");
        stack.addFirst("第四颗子弹");
        System.out.println(stack);//[第四颗子弹, 第三颗子弹, 第二颗子弹, 第一颗子弹]

        //出栈,弹栈
        System.out.println(stack.removeFirst());//第四颗子弹-----removeFirst == pop 换包装
        System.out.println(stack.pop());//第三颗子弹
        System.out.println(stack.removeFirst());//第二颗子弹
        System.out.println(stack);//[第一颗子弹]


        System.out.println("---------------------------");


        //队列
        LinkedList<String> queue = new LinkedList<>();
        //入队
        queue.addLast("1号");
        queue.addLast("2号");
        queue.addLast("3号");
        queue.addLast("4号");
        System.out.println(queue);//[1号, 2号, 3号, 4号]

        //出队
        System.out.println(queue.removeFirst());//1号
        System.out.println(queue.removeFirst());//2号
        System.out.println(queue.removeFirst());//3号
        System.out.println(queue);//[4号]
    }
}

三、四种遍历方式

(1)迭代器

(2)增强for循环

(3)Lambda表达式

(4)for循环(因为List集合存在索引)

package List;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class traverse {
    public static void main(String[] args) {
        List<String> lists = new ArrayList<>();
        lists.add("java1");
        lists.add("java2");
        lists.add("java3");
        lists.add("java4");

        /**
         * (1)for循环
         */
        System.out.println("----------------------------");
        for (int i = 0; i < lists.size(); i++) {
            String ele = lists.get(i);
            System.out.println(ele);
        }

        /**
         * (2)迭代器
         */
        System.out.println("----------------------------");
        Iterator<String> it = lists.iterator();
        while(it.hasNext()){
            String ele = it.next();
            System.out.println(ele);
        }

        /**
         * (3)foreach
         */
        System.out.println("----------------------------");
        for (String ele : lists) {
            System.out.println(ele);
        }

        /**
         * JDK8 之后的Lambda 的表达式
         */
        System.out.println("----------------------------");
        lists.forEach( s-> {
            System.out.println(s);
        });
    }
}

四种遍历方式的异同

(1)在遍历数据时没有区别

(2)若希望知道遍历到哪了,可以选择使用for循环

(3)除了for循环外,另外三种循环都是从头遍历到尾的

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐