list的两个实现类

打印 上一主题 下一主题

主题 968|帖子 968|积分 2904

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
基本

ArrayList:适用于须要频繁随机访问元素
LinkedList:适用于须要频繁进行插入和删除利用,尤其是在列表的头部或尾部进行利用
二者的用法基本划一,只是时间和空间复杂度不同
  1. List<Integer> arrayList = new ArrayList<>();
  2.         for (int i = 0; i < 10; i++) {
  3.             arrayList.add(i);
  4.         }
  5.         // 随机访问第 5 个元素
  6.         int element = arrayList.get(5);
  7. -----------------------------------------------
  8. List<Integer> linkedList = new LinkedList<>();
  9.         for (int i = 0; i < 10; i++) {
  10.             linkedList.add(i);
  11.         }
  12.         // 随机访问第 5 个元素
  13.         int element = linkedList.get(5);
复制代码
  1. List<Integer> arrayList = new ArrayList<>();
  2.         for (int i = 0; i < 10; i++) {
  3.             arrayList.add(i);
  4.         }
  5.         // 在索引为 5 的位置插入元素 100
  6.         arrayList.add(5, 100);
  7. ---------------------------------------------
  8. LinkedList<Integer> linkedList = new LinkedList<>();
  9.         for (int i = 0; i < 10; i++) {
  10.             linkedList.add(i);
  11.         }
  12.         // 在索引为 5 的位置插入元素 100
  13.         linkedList.add(5, 100);
复制代码
  1. // 修改元素
  2. linkedList.set(1, "grape");
  3. --------------------------------
  4. ArrayList.set(1, "grape");
复制代码



  • ArrayList:ArrayList 的内存占用相对较小,重要是数组本身的内存开销。但在数组扩容时,会有额外的内存分配和元素复制利用。
  • LinkedList:LinkedList 的每个节点除了存储元素本身外,还须要额外的引用(指向前一个节点和后一个节点),因此内存占用相对较大。
 

T[] toArray(T[] a):将列表转换为指定类型的数组。其中参数 a 是一个指定类型的数组,假如该数组的长度足够容纳列表中的所有元素,则直接利用该数组存储元素;假如长度不敷,则会创建一个新的、与列表长度类似的指定类型的数组。
  1. List<String> ret = new ArrayList<String>();
  2. String[] res = ret.toArray(new String[ret.size()]);
复制代码
LinkedLIst的特别利用

  1. import java.util.LinkedList;
  2. public class LinkedListExample {
  3.     public static void main(String[] args) {
  4.         // 创建 LinkedList 对象
  5.         LinkedList<String> linkedList = new LinkedList<>();
  6.         // 添加元素
  7.         
  8.         
  9.         linkedList.addFirst("date");
  10.         linkedList.addLast("elderberry");
  11.         // 访问元素
  12.         System.out.println("索引为 1 的元素: " + linkedList.get(1));
  13.         System.out.println("第一个元素: " + linkedList.getFirst());
  14.         System.out.println("最后一个元素: " + linkedList.getLast());
  15.         // 修改元素
  16.         linkedList.set(1, "grape");
  17.         // 删除元素
  18.         String removedElement = linkedList.remove(1);
  19.         System.out.println("删除的元素: " + removedElement);
  20.         // 遍历元素
  21.         for (String item : linkedList) {
  22.             System.out.println(item);
  23.         }
  24.     }
  25. }
复制代码
转化

数组转list,如许可以利用contains
  1. String[] array = {"apple", "banana", "cherry"};
  2.         // 将数组转换为List
  3.         List<String> list = Arrays.asList(array);
复制代码










免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

前进之路

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表