本文介绍: 5,public E set(int index , E element):修改索引位置处的元素修改成功后,会返回原来的数据。List集合因为支持索引,所以多了很多与索引相关方法,当然,Collection的功能List也都能继承。3,public E remove(int index):根据索引删除元素返回删除元素。或者也可能需要行数组的扩容。1,创建一个ArrayList集合对象有序,可重复,有索引)ArrayList有序,可重复,有索引。List系列集合特点:有序,可重复,有索引

List系列集合特点:有序,可重复,有索引

  ArrayList有序,可重复,有索引

LinkedList有序,可重复,有索引

底层实现不同!适合的场景不同!)

List集合的特有方法

d7ce1e7aa33a4ccaa98b9105bb6ecbe5.png

1,创建一个ArrayList集合对象有序,可重复,有索引)

 List<String&gt; list = new ArrayList<&gt;();//经典代码 List是接口
        list.add("简隋英");
        list.add("李玉");
        list.add("李玉");
        list.add("邵群");
        System.out.println(list);//[简隋英,李玉,李玉,邵群]

2,public void add(int index , E element):在某个索引位置插入元素

        list.add(2,"李程秀");
        System.out.println(list);//[简隋英,李玉,李程秀,李玉,邵群]

3,public E remove(int index):根据索引删除元素,返回删除元素

        System.out.println(list.remove(2));//李程秀
        System.out.println(list);//[简隋英,李玉,李玉,邵群]

4,public E get(int index):返回集合指定位置的元素

System.out.println(list.get(0));//简隋英

5,public E set(int index , E element):修改索引位置处的元素,修改成功后,会返回原来的数据

        System.out.println(list.set(2, "李程秀"));
        System.out.println(list);//[简隋英,李玉,李程秀,邵群]

List集合支持的遍历方式

1,for循环(因为List集合有索引)

import java.util.*;

public class Work1 {
    public static void main(String[] args)  {
        List<String&gt; list = new ArrayList<&gt;();//经典代码 List是接口
        list.add("兰波");
        list.add("白楚年");
        list.add("陆言");
        list.add("毕揽星");
        //System.out.println(list);
        for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);
            System.out.println(s);
        }

2,迭代

         Iterator<String> it = list.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }

3,增强for循环

        for (String s : list) {
            System.out.println(s);
        }

4,Lambda表达式

        list.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });
    }
}

ArrayList集合的底层原理

基于数组实现

1da5dbd7371b40b1aebca5f407f27e70.png

 

查询速度快:查询数据通过地址值和索引定位查询任意数据耗时相同

删除效率低:可能需要把后面很多的数据进行前移

添加效率极低:可能需要把后面很多的数据后移,再添加元素;或者也可能需要行数组的扩容

ArrayList集合适合的应用场景

38c1bd460452442ba79639e2734c86ad.png

 

LinkedList集合的底层原理

基于链表实现

9b04267eef054f28819d65b886038345.png

ba6c43186e034f32b6e9f4b04498154e.png 

ac991d519c394ecba0ad971d2dfc3dc4.png 

3544a2eaa08b4ec7941739ca8a755b08.png 

5ed60dbd0ef74da2b788beaa560513f1.png 

 LinkedList的应用场景之一:可以用来设计

import java.util.*;

public class Work1 {
    public static void main(String[] args)  {
        //创建一个队列
        LinkedList<String> queue = new LinkedList<>();
        queue.addLast("1号");
        queue.addLast("2号");
        queue.addLast("3号");
        queue.addLast("4号");
        System.out.println(queue);
        //出队操作
        System.out.println(queue.removeFirst());
        System.out.println(queue.removeFirst());
        System.out.println(queue.removeFirst());
    }
}

LinkedList的应用场景之一:可以用来设计

749373b75e4a400e85bfc432e71b18d3.png

 

import java.util.*;

public class Work1 {
    public static void main(String[] args)  {
        LinkedList<String> stack = new LinkedList<>();
        //压栈(push)
        stack.addFirst("第1颗子弹");
        stack.addFirst("第2颗子弹");
        stack.addFirst("第3颗子弹");
        stack.addFirst("第4颗子弹");
        System.out.println(stack);
        //出栈(pop)
        System.out.println(stack.removeFirst());
        System.out.println(stack.removeFirst());
        System.out.println(stack);
    }
}

 

 

原文地址:https://blog.csdn.net/2301_80099706/article/details/134718919

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_17747.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注