ArrayList与LinkedList的使用以及区别

一.List的特点

  • List本身是有序,可重复的,所以ArrayList与LinkedList也同样是这样

二.ArrayList

  • ArrayList的底层原理是数组,当创建集合并传入第一个对象时初始长度是10,当一直传入对象直到达到容量最小值时,便会创建一个比原来长1.5倍的新数组,并将原来的数组内容,都转移至新数组,原有数组将被回收,但ArrayList的最大容量为0x7fffffff
  • 其数组存储方法,可以使ArrayList在遍历与查找的速度上更快一些
  • 增删查改等方法的使用
import java.util.ArrayList;

/**
 * @ Author: Zhangyu
 * @ Date: 2020/7/30
 * @ Description:
 */
public class Test {
    public static void main(String[] args) {

        ArrayList arrayList=new ArrayList();//创建集合对象
        ArrayList arrayList1=new ArrayList();

        arrayList.add("1");//增
        arrayList.add("2");//增
        arrayList.add(0,"3");//在指定下标为0的地方,传入对象,其他对象后移
        arrayList1.addAll(arrayList);//将一个集合的所有内容都添加到当前集合
        
        arrayList1.remove(0);//通过传入的下标来删除对应内容
        arrayList.remove("1");//通过传入的对象来直接删除
        arrayList1.removeAll(arrayList);//删除与arrayLisr相重叠的内容
        
        System.out.println(arrayList.get(0));//输出当前下标0所对应的值

        arrayList.set(0,"3");//改(传入的是下标,与修改的值)
        System.out.println(arrayList.get(0));//输出当前下标0改过后所对应的值

        arrayList.size();//获得当前集合已存对象的长度
		arrayList.contains("1");//判断集合是否包含改对象,返回值为布尔型

		arrayList.clear();//清空所有元素
		arrayList.isEmpty();//判断当前数组是否为空数组


    }
}

三.LinkedList

  • LinkedList底层原理是双向链表的存储结构,即,每一个独立的存储块都会包含上一个存储块与下一个存储块的地址,这样就可以使所有存储块连接起来,当一个存储块没有上一个存储块的地址,说明是第一个存储块,也就是头,同样最后一块存储块没有下一个存储块的地址
  • 其链表的存储方式,使LinkedList在增删的操作上更有优势(增删只需要变动相邻位置的地址记录即可完成,而ArrayList增删则需要将操作位置后的所有元素挪动)
  • 增删查改等方法的使用
import java.util.ArrayList;
import java.util.LinkedList;

/**
 * @ Author: Zhangyu
 * @ Date: 2020/7/30
 * @ Description:
 */
public class Test {
    public static void main(String[] args) {

        LinkedList list=new LinkedList();
        list.add("1");//添加对象1
        list.addFirst("2");//添加对象值第一位
        list.addLast("3");//添加对象至最后一位.add本身便默认添加至最后一位
        
        list.remove(0);//通过下标删除对应元素
        list.remove("1");//通过对应元素来直接删除
        list.removeFirst();//删除第一位
        list.removeLast();//删除最后一位
        
        list.get(0);//得到下标0所对应的元素
        list.getFirst();//得到第一位对应的元素
        list.getLast();//得到最后一位的元素
        
        list.set(0,"3");//修改下标0所对应的元素为3
        
        list.size();//得到集合的长度
		arrayList.contains("1");//判断集合是否包含改对象,返回值为布尔型
		list.clear();//清空所有元素
		 list.isEmpty();//判断当前数组是否为空数组

    }
}
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页