(二十四)List系列集合

您所在的位置:网站首页 单列集合双列集合 (二十四)List系列集合

(二十四)List系列集合

#(二十四)List系列集合| 来源: 网络整理| 查看: 265

目录

        前言:

        一、List集合的特有方法

二、List集合的遍历方式有几种?

三、Arraylist集合底层原理

四、LinkedList的特点

前言:

        List集合包括JavaList接口以及List接口的所有实现类。List集合中的元素允许重复,各元素的顺序放是对象插入的顺序,类似Java中的数组,用户可通过使用索引(元素在集合中的位置)来访问集合中的元素。

        List的最重要的特征就是有序;它会确保以一定的顺序保存元素。List在Collection的基础上添加了大量方法,使之能在序列中间插入和删除元素。(只对LinkedList推荐使用。)

        List可以制造ListIterator对象,你除了能用它在List的中间插入和删除元素之外,还能用它沿两个方向遍历List。

一、List集合的特有方法

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

 

2.代码演示:

import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; ​ /**List * Arraylist Linkedlist 有序、可重复、有索引 * LinkList :API * addFirst(E,e) 在该列表开头插入指定的元素 * addLast(E,e) 将指定的元素追加到此列表的末尾 * getFirst() 返回此列表的第一个元素 * getLast() 返回此列表的最后一个元素 * removeFirst() 删除并返回第一个元素 * removeLast() 删除并返回最后一个元素 */ ​ /**集合并发修改异常问题 * 找出某些元素并修改时容易出并发修改异常问题 */ public class List_Demo {    public static void main(String[] args) {        List list = new ArrayList();        list.add("JAVA");        list.add("JAVA");        list.add("MYsql");        list.add("Python");        //在某个索引位置添加数据        list.add(2, "html");        System.out.println(list);        //根据索引删除元素        System.out.println(list.remove(2));        System.out.println(list);        //根据索引获取元素        System.out.println(list.get(2));        //修改索引位置的元素 ,返回修改前的数据        System.out.println(list.set(1, "Myprict"));        System.out.println(list);   } }

3.List的实现类的底层原理

        ArrayList底层是基于数组实现的,根据查询元素快,增删相对慢;

        linkedList底层是基于双链表实现的,查询元素慢,增删首尾元素是非常快的。

二、List集合的遍历方式有几种?

                ①迭代器

                ②增强for循环

                ③Lambda表达式

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

4.代码演示:

import java.util.ArrayList; import java.util.Iterator; import java.util.List; ​ public class ListDemo2 {    public static void main(String[] args) {        List lists = new ArrayList();        lists.add("JAVA");        lists.add("JAVA");        lists.add("MYsql");        lists.add("Python");        //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 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);       }        //4.Lambda表达式        System.out.println("--------------");        lists.forEach(s -> {            System.out.println(s);       });   } } 三、Arraylist集合底层原理

        Arraylist集合底层是基于数组实现的:根据索引定位元素快,增删需要做元素的移位操作。

        第一次创建集合并添加第一个元素的时候,在底层创建一个默认长度为10的数组。

四、LinkedList的特点

        底层数据结构是双链表,查询慢,首尾操作的速度是极快的,所以多了很多首尾操作的特有API。

5.LinkedList集合的特有功能

6.代码演示:

import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; ​ /**List * Arraylist Linkedlist 有序、可重复、有索引 * LinkList :API * addFirst(E,e) 在该列表开头插入指定的元素 * addLast(E,e) 将指定的元素追加到此列表的末尾 * getFirst() 返回此列表的第一个元素 * getLast() 返回此列表的最后一个元素 * removeFirst() 删除并返回第一个元素 * removeLast() 删除并返回最后一个元素 */ ​ /**集合并发修改异常问题 * 找出某些元素并修改时容易出并发修改异常问题 */ public class List_Demo {    public static void main(String[] args) {        //LinkedList可以完成队列结构和栈结构(双链表)        //栈        LinkedList stack = new LinkedList();        //入栈        stack.push("第一颗子弹");        stack.addFirst("第二颗子弹");        stack.addFirst("第三颗子弹");        stack.addFirst("第四颗子弹");        stack.addFirst("第五颗子弹");        stack.addFirst("第六颗子弹");        System.out.println(stack);        //出栈        System.out.println(stack.removeFirst());        System.out.println(stack.pop());        System.out.println(stack);        System.out.println("==================================");        //队列        LinkedList queue = new LinkedList();        //入队        queue.offerLast("1号");        queue.addLast("2号");        queue.addLast("3号");        queue.addLast("4号");        queue.addLast("5号");        //出队        System.out.println(queue.removeFirst());        System.out.println(queue); ​        System.out.println("=============================");        //结合并发修改异常        //迭代器        Iterator it = list.iterator();        while (it.hasNext()) {            String ele = it.next();            if ("JAVA".equals(ele)) { //               list.remove("JAVA");//会报错                it.remove();//正确           }       }        System.out.println(list);   } }



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3