一、底层数据结构不同
ArrayList实现了基于动态数组的数据结构,而LinkedList的是基于链表的数据结构
二、效率不同
1)对于随机访问(get、set)ArrayList比LinkedList的效率更高,因为LinkedList是线性的数据存储方式,所以需要移动指针从前往后依次查找
2)当对数据进行增加和删除的操作(add和remove操作)时,LinkedList比ArrayList的效率更高,因为ArrayList是数组,所以在其中进行增删操作时,会对操作点之后所有数据的下标索引造成影响,需要进行数据的移动。
3)关于链表有个约瑟夫问题,可以想一想怎么实现,我还没搞明白这个怎么解(用linkedlist),有会的记得分享哈
https://blog.csdn.net/apple596529/article/details/89708670
三、单元测试
LinkedList
package com.liu.sptest;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.LinkedList;
/**
* @Author: beauty
* @Date: 2020/4/30 4:05 下午
*/
public class LinkListTest {
final static Logger logger = LoggerFactory.getLogger(LinkListTest.class);
@Test
public void testLinkList() {
LinkedList<Integer> linkedList = new LinkedList<>();
linkedList.addFirst(0);
linkedList.add(1, 3);
linkedList.add(2, 6);
linkedList.add(10);
linkedList.addLast(8);
logger.info("LinkedList的大小=========={}", linkedList.size());
// linkedList.remove(1);
logger.info("0的位置在======>>{}", linkedList.indexOf(0));
logger.info("第2个元素是?======>>{}", linkedList.get(1));
}
}
ArrayList
package com.liu.sptest;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
//import java.util.List;
/**
* @Author: beauty
* @Date: 2020/4/30 2:07 下午
*/
public class ListTest {
static final Logger logger = LoggerFactory.getLogger(ListTest.class);
@Test
public void testArrayList() {
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add(0, "one");
arrayList.add(1, "two");
arrayList.add(2, "three");
arrayList.add(3, "two");
// arrayList.remove(1);
// arrayList.set(1,"xiaoxiao");
logger.info("if arrayList.contains one?============>>{}", arrayList.contains("four"));
logger.info("where two first appear?==========>>{}", arrayList.indexOf("two"));
logger.info("where two appear the last time?==========>>{}", arrayList.lastIndexOf("two"));
logger.info("the arrayList's size is?==========>>{}", arrayList.size());
// for(int i=0;i<arrayList.size();i++){
// logger.info("i={},arrayList={}",i,arrayList.get(i));
// }
}
}
本文引用了以下两篇文章
https://www.php.cn/faq/415621.html
https://blog.csdn.net/eson_15/article/details/51145788