ArrayList 与 LinkedList

目录

ArrayList

List.contains

LinkedList

总结

 


ArrayList

有序的(存储和读取的顺序是一致的)    有整数索引           允许重复的

底层数据结构是数组 查询 | 修改快 增删慢

package CeShi;

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

/**
 * @author Lzy
 * @creat 2021-03-21-11:35
 * void add(int index, E element) :将元素添加到index索引位置上
 * 		E get(int index) :根据index索引获取元素
 * 		E remove(int index) :根据index索引删除元素
 * 		E set(int index, E element):将index索引位置的的元素设置为element
 * 	底层数据结构是数组 查询|修改快 增删慢
 */
public class ListDemo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add(0,"hello");
        list.add(1,"xiaoli");
        System.out.println("原数组: " + list);
        list.add(0,"xiaozhang");//添加在索引0处,原有数组总体右移
        System.out.println(list);

        System.out.println("打印索引2元素: " + list.get(2));
        System.out.println("去除索引1元素并打印: " +list.remove(1));
        System.out.println("去除索引1后: " + list);
        System.out.println("更改索引0元素并打印: " + list.set(0,"zzz"));
        System.out.println("最终: " + list);
    }
}

 

 

List.contains(o),比较list是否包含o

package CeShi;

import java.util.ArrayList;
/**
 * @author Lzy
 * @creat 2021-03-21-12:58
 * 判断元素是否在列表存在  contains()
 * 假如List中有n个元素,那么会调用n次o.equals(e),只要有一次o.equals(e)返回了true,
 * 那么list.contains(o)返回true,否则返回false
*/
public class ListTest {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("java");
        list.add("cpp");
        list.add("python");

        boolean flag = list.contains("php");
        System.out.println(flag);
    }
}

 

LinkedList

 LinkedList底层使用的是链表结构,因此增删快,查询相对ArrayList较慢 访问数据的平均效率低,需要对链表进行遍历

需要更多的内存,因为ArrayList的每个索引的位置是实际的数据,而LinkedList中的每个节点中存储的是实际的数据和前后节点的位置

package CeShi;

import java.util.LinkedList;

/**
 * @author Lzy
 * @creat 2021-03-21-12:01
 * void addFirst(E e) :向链表的头部添加元素
 *  void addLast(E e):向链表的尾部添加元素
 *  E getFirst():获取链头的元素,不删除元素
 *  E getLast():获取链尾的元素,不删除元素
 *  E removeFirst():返回链头的元素并删除链头的元素
 *  E removeLast():返回链尾的元素并删除链尾的元素
 *
 *  LinkedList底层使用的是链表结构,因此增删快,查询相对ArrayList较慢
 */
public class LinkedListDemo {
    public static void main(String[] args) {
        LinkedList<String> linked= new LinkedList<>();

        linked.add("every");
        linked.add("day");
        System.out.println("最初链表:" + linked);
        linked.addFirst("xiaoli");
        System.out.println("在头部添加元素: " + linked);

        linked.addLast("you");
        System.out.println("在尾部添加元素" + linked);
        linked.add(3,"missing");
        System.out.println("在索引3前添加元素: " +linked);
        System.out.println("获取头元素: " +linked.getFirst() +" 尾元素: "+ linked.getLast());

        System.out.println("删除头元素,并返回值: " + linked.removeFirst());
        System.out.println(linked);

    }
}

 

总结

总结是截图另一个博主,侵删  传送门 Java 常见面试题之“Arraylist和Linkedlist的区别”

天龙八部——内功篇 文章被收录于专栏

日常工作遇到的基础积累

全部评论

相关推荐

来,说点可能被同行“骂”的大实话。🙊当初接数字马力Offer时,朋友都说:“蚂蚁的“内包”公司?你想清楚啊!”但入职快一年后的今天,我反而对他有了不一样的看法!🔹&nbsp;是偏见?还是信息差!之前没入职之前外面都在说什么岗位低人一等这类。实际上:这种情况不可至否,不能保证每个团队都是其乐融融。但我在的部门以及我了解的周边同事都还是十分好相处的~和蚂蚁师兄师姐之间也经常开一些小玩笑。总之:身份是蚂蚁公司给的,地位是自己挣的(一个傲娇女孩的自述)。🔹&nbsp;待遇?玩的就是真实!试用期工资全额发!六点下班跑得快(早9晚6或者早10晚7,动态打卡),公积金顶格交。别听那些画饼的,到手的钱和下班的时间才是真的(都是牛马何必难为牛马)。🔹&nbsp;能不能学到技术?来了就“后悔”!我们拥有权限直通蚂蚁知识库,技术栈多到学不完。说“学不到东西”的人,来了可能后悔——后悔来晚了(哈哈哈哈,可以不学但是不能没有)!💥&nbsp;内推地址:https://app.mokahr.com/su/ueoyhg❗我的内推码:NTA6Nvs走我的内推,可以直达业务部门,面试流程更快速,进度可查!今天新放HC,之前挂过也能再战!秋招已经正式开始啦~机会就摆在这,敢不敢来试一试呢?(和我一样,做个勇敢的女孩)
下午吃泡馍:数字马力的薪资一般哇,5年经验的java/测试就给人一万出头,而且刚入职第三天就让人出差,而且是出半年
帮你内推|数字马力 校招
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务