其实这两个数据结构蛮好玩的,都是 List 列表存储
1.ArrayList 底层是数组存储,LinkedList 底层是基于双向链表存储的 2.由于底层存储方式不同,一些特性也就由此展现。 3.数组存储:添加删除操作都是比较浪费存储时间的,以为每一次操作,都要进行数据的迁移。但是对于数据经常查询.get()方法的时候,Array 的优势就体现了。基于链表存储,他的添加删除操作是比较快的,但查询来说就相对较慢,因为他需要遍历每一个节点,从而得倒想要的数据。
1 | package com.zhangyi; |
1 | /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home/bin/java "-javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=52811:/Applications/IntelliJ IDEA.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath /opt/dev/java/Course/out/production/Course:/Users/zhangyi/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.3.1/junit-jupiter-api-5.3.1.jar:/Users/zhangyi/.m2/repository/org/apiguardian/apiguardian-api/1.0.0/apiguardian-api-1.0.0.jar:/Users/zhangyi/.m2/repository/org/opentest4j/opentest4j/1.1.1/opentest4j-1.1.1.jar:/Users/zhangyi/.m2/repository/org/junit/platform/junit-platform-commons/1.3.1/junit-platform-commons-1.3.1.jar:/Users/zhangyi/.m2/repository/junit/junit/4.12/junit-4.12.jar:/Users/zhangyi/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar com.zhangyi.compare |
通过这个小程序,可以清楚的发现查找如果对于数据存储而言,如果 Arraylist 进行添加数据,除了在尾部添加效率相对较高,但是还要考虑扩容问题,那么 LinkedList 就比较划算了,而数据查找起来,ArrayList 相对 Linkedlist 优势比较明显。所以我觉得若果在数据库读取数据的时候存储应该优先考虑将数据保存为 ArrayList 格式。