Java : List 集合接口 : LinkedList 子类

LinkedList 子类 ( 5 %)

在List 接口里面还有一个 LinkedList 子类, 这个子类如果向父接口转型的话, 使用的形式和之前的接口没有任何的区别.

案例: 使用 LinkedList

package com.beyond.dhl;

import java.util.LinkedList;
import java.util.List;

public class TestDemo {
    
    
	public static void main(String[] args) {
    
    
		List<String> all = new LinkedList<String>();
		all.add("张三");
		all.add("李四");
		all.add("王五");
		for (int x = 0; x < all.size(); x++) {
    
    
			System.out.println(all.get(x));
		}
	}

}

面试题: 请解释 ArrayList 与 LinkedList 区别 ?

  1. 首先观察一下 ArrayList类的核心代码: 可以发现 ArrayList 里面存放的是一个数组 , 在实例化此类对象的时候, 默认传入了数组的大小, 则里面保存的数组就会开辟一个定长的数组.但是在后面进行数据保存的时候, 发现数组的个数不够了会进行数组的动态扩充.
    所以很明显, 在实际的开发之中, 如果要使用 ArrayList 最好的做法就是设置初始化的大小(以分页的程序为例, 每次只会取出指定行的内容).

构造方法 :

public ArrayList() {
    
    
        this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
    }

常量 :

private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {
    
    };
  1. linkedList : 是一个纯粹的链表实现, 与之前编写的链表程序的实现完全一样(比我们的性能高).

总结

ArrayList 封装的是一个数组, LinkedList封装是一个链表实现
时间复杂度上, ArrayList 的时间复杂度为 1, 而 LinkedList 的时间复杂度为 n;

开发之中, 考虑的就是 ArrayList, 如果要考虑性能, 一定要传入初始化大小.

猜你喜欢

转载自blog.csdn.net/Beyond_Nothing/article/details/112706513