栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

区分Java中的ArrayList和LinkedList

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

区分Java中的ArrayList和LinkedList

一:ArrayList和linkedList的大致区别如下:

1.ArrayList是实现了基于动态数组的数据结构,ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高

2.linkedList基于链表的数据结构, 插入、删除元素时效率比较高  故:【插入、删除操作频繁时,可使用linkedList来提高效率】linkedList提供对头部和尾部元素进行添加和删除操作的方法,插入/删除第一个和最后一个效率比较高;

3:ArrayList和linkedList都是List接口的实现,都存储一组不唯一,有序(插入顺序)的对象, 对元素进行添加、删除等操作[ 即:List的性质]

4.对于随机访问get和set,ArrayList觉得优于linkedList,因为linkedList要移动指针。

5.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

6:linkedList比ArrayList更占内存

eg:(代码示例01)----ArrayList与linkedLis的数据添加和查找耗时对比

import java.util.ArrayList;
import java.util.linkedList;
import java.util.List;

public class HFSD {
 static final int N=50000;  //添加5000条数据
  static long timeList(List list){  //添加数据所需时间
     long start=System.currentTimeMillis();
    Object o = new Object();
     for(int i=0;i());
    List list2=addList(new linkedList<>());
    System.out.println("ArrayList查找"+N+"条耗时:"+readList(list1));
    System.out.println("linkedList查找"+N+"条耗时:"+readList(list2));
   }

从以上结果,我i们可以看出 ArrayList更适合读取数据,linkedList更多的时候添加或删除数据。

ArrayList:内部是使用可増长数组实现的,所以是用get和set方法是花费少数时间的,但是如果插入元素和删除元素,除非插入和删除的位置都在表末尾,否则代码开销会很大,因为里面需要数组的移动。

linkedList:是使用双链表实现的,所以get会非常消耗资源,除非位置离头部很近。但是插入和删除元素花费少数时间。

二:ArrayList和linkedList的共有方法(即List的方法):

eg:(代码示例02)----ArrayList代码示例

package JIhekuangjia006.ArrayList;


public class Pig {
 private String name;
 private String sex;

 public Pig(String name,String sex){
  this.name=name;
  this.sex=sex;
 }
 public void setName(String name){
  this.name=name;
 }
 public String getName(){
  return name;
 }
 public void setSex(String sex){
  this.sex=sex;
 }
 public String getSex(){
  return sex;
 }
}
package JIhekuangjia006.ArrayList;

import java.util.*;


public class Test1 {
 public static void main(String[] args) {
  //1.存储小猪信息
  Pig xiaojia=new Pig("小佳","母");//索引为0
  Pig xiaolong=new Pig("小龙","公");//索引为1
  Pig jiajia=new Pig("佳佳","女");//索引为2
  Pig longlong=new Pig("龙龙","男");//索引为3(与数组相同,从0开始)

  //为小猪排序
  List list=new ArrayList();
  //直接将元素添加排序
  list.add(xiaojia);
  list.add(jiajia);
  list.add(xiaolong);

  //将龙龙添加到索引为2的位置
  list.add(2,longlong);

  //list.add(jiajia);//List 接口存储一组不唯一,有序(插入顺序)的对象

  //2.获得小猪的总数
  //通过list.size()方法获取元素的个数
  list.size();
  System.out.println("小猪的总数为"+list.size());

  //3.逐条打印小猪信息
  //方法一:for循环与get()方法配合实现遍历
  for(int i=0;i

测试运行结果如下:

三:linkedList的特有方法:

eg:(代码示例03)----linkedList代码示例:

package JIhekuangjia006.linkedList;


public class Pig {
 private String name; //昵称
 private String sex;  //性别

 public Pig(String name,String sex){
  this.name=name;
  this.sex=sex;
 }
 public void setName(String name){
  this.name=name;
 }
 public String getName(){
  return name;
 }
 public void setSex(String sex){
  this.sex=sex;
 }
 public String getSex(){
  return sex;
 }
}
package JIhekuangjia006.linkedList;

import java.util.Iterator;
import java.util.linkedList;


public class Test2 {
 public static void main(String[] args) {
  //1.存储小猪信息
  Pig xiaojia=new Pig("小佳","母");//索引为0
  Pig xiaolong=new Pig("小龙","公");//索引为1
  Pig jiajia=new Pig("佳佳","女");//索引为2
  Pig longlong=new Pig("龙龙","男");//索引为3(与数组相同,从0开始)

  //为小猪排序
  linkedList list=new linkedList();
  //直接将元素添加排序
  list.add(xiaolong);
  list.add(longlong);
  list.addFirst(jiajia);//将佳佳添加到第一个位置
  list.addLast(xiaojia);//将小龙添加到最后一个位置

  //list.add(jiajia);//List 接口存储一组不唯一,有序(插入顺序)的对象

  //2.获得小猪的总数
  //通过list.size()方法获取元素的个数
  list.size();
  System.out.println("小猪的总数为"+list.size());

  //3.逐条打印小猪的信息

  //方法一:通过迭代器Iterator实现遍历
  Iterator it=list.iterator();
  while (it.hasNext()){
   Pig center=(Pig)it.next();
   System.out.println(center.getName()+","+center.getSex());
  }

  //方法二:for循环与get()方法配合实现遍历
//  for(int i=0;i


测试运行结果如下:

以上就是区分Java中的ArrayList和linkedList的详细内容,更多关于Java中ArrayList和linkedList的资料请关注考高分网其它相关文章!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/133504.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号