最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

區(qū)分Java中的ArrayList和LinkedList

 更新時(shí)間:2020年06月28日 15:25:24   作者:你的龍兒  
這篇文章主要介紹了如何區(qū)分Java中ArrayList和LinkedList,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下

一:ArrayList和LinkedList的大致區(qū)別如下:

1.ArrayList是實(shí)現(xiàn)了基于動態(tài)數(shù)組的數(shù)據(jù)結(jié)構(gòu),ArrayList實(shí)現(xiàn)了長度可變的數(shù)組,在內(nèi)存中分配連續(xù)的空間。遍歷元素和隨機(jī)訪問元素的效率比較高

2.LinkedList基于鏈表的數(shù)據(jù)結(jié)構(gòu), 插入、刪除元素時(shí)效率比較高  故:【插入、刪除操作頻繁時(shí),可使用LinkedList來提高效率】LinkedList提供對頭部和尾部元素進(jìn)行添加和刪除操作的方法,插入/刪除第一個(gè)和最后一個(gè)效率比較高;

3:ArrayList和LinkedList都是List接口的實(shí)現(xiàn),都存儲一組不唯一,有序(插入順序)的對象, 對元素進(jìn)行添加、刪除等操作[ 即:List的性質(zhì)]

4.對于隨機(jī)訪問get和set,ArrayList覺得優(yōu)于LinkedList,因?yàn)長inkedList要移動指針。

5.對于新增和刪除操作add和remove,LinedList比較占優(yōu)勢,因?yàn)锳rrayList要移動數(shù)據(jù)。

6:LinkedList比ArrayList更占內(nèi)存

eg:(代碼示例01)----ArrayList與LinkedLis的數(shù)據(jù)添加和查找耗時(shí)對比

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

public class HFSD {
 static final int N=50000;  //添加5000條數(shù)據(jù)
  static long timeList(List list){  //添加數(shù)據(jù)所需時(shí)間
     long start=System.currentTimeMillis();
    Object o = new Object();
     for(int i=0;i<N;i++) {
       list.add(0, o);
      }
     return System.currentTimeMillis()-start;
    }
  static long readList(List list){   //查找數(shù)據(jù)所需時(shí)間
     long start=System.currentTimeMillis();
     for(int i=0,j=list.size();i<j;i++){

      }
     return System.currentTimeMillis()-start;
    }

    static List addList(List list){
     Object o = new Object();
     for(int i=0;i<N;i++) {
      list.add(0, o);
      }
     return list;
    }
  public static void main(String[] args) {
    System.out.println("ArrayList添加"+N+"條耗時(shí):"+timeList(new ArrayList()));
     System.out.println("LinkedList添加"+N+"條耗時(shí):"+timeList(new LinkedList()));

    List list1=addList(new ArrayList<>());
    List list2=addList(new LinkedList<>());
    System.out.println("ArrayList查找"+N+"條耗時(shí):"+readList(list1));
    System.out.println("LinkedList查找"+N+"條耗時(shí):"+readList(list2));
   }

從以上結(jié)果,我i們可以看出 ArrayList更適合讀取數(shù)據(jù),linkedList更多的時(shí)候添加或刪除數(shù)據(jù)。

ArrayList:內(nèi)部是使用可増長數(shù)組實(shí)現(xiàn)的,所以是用get和set方法是花費(fèi)少數(shù)時(shí)間的,但是如果插入元素和刪除元素,除非插入和刪除的位置都在表末尾,否則代碼開銷會很大,因?yàn)槔锩嫘枰獢?shù)組的移動。

LinkedList:是使用雙鏈表實(shí)現(xiàn)的,所以get會非常消耗資源,除非位置離頭部很近。但是插入和刪除元素花費(fèi)少數(shù)時(shí)間。

二: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.*;

/**
 * 使用ArrayList集合進(jìn)行操作數(shù)據(jù)
 */
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(與數(shù)組相同,從0開始)

  //為小豬排序
  List list=new ArrayList();
  //直接將元素添加排序
  list.add(xiaojia);
  list.add(jiajia);
  list.add(xiaolong);

  //將龍龍?zhí)砑拥剿饕秊?的位置
  list.add(2,longlong);

  //list.add(jiajia);//List 接口存儲一組不唯一,有序(插入順序)的對象

  //2.獲得小豬的總數(shù)
  //通過list.size()方法獲取元素的個(gè)數(shù)
  list.size();
  System.out.println("小豬的總數(shù)為"+list.size());

  //3.逐條打印小豬信息
  //方法一:for循環(huán)與get()方法配合實(shí)現(xiàn)遍歷
  for(int i=0;i<list.size();i++){
   Pig center=(Pig)list.get(i);//因?yàn)閘ist.get()的返回值為Object的類型,所以需要強(qiáng)轉(zhuǎn)為Pig的類型
   System.out.println(center.getName()+","+center.getSex());
  }

  //方法二:通過迭代器Iterator實(shí)現(xiàn)遍歷
//  Iterator it=list.iterator();
//  while (it.hasNext()){
//   Pig center=(Pig)it.next();
//   System.out.println(center.getName()+","+center.getSex());
//  }


  System.out.println("*********************************************************");
  //4.刪除小豬信息
  //刪除第一只小豬,小佳
  list.remove(0);//與數(shù)組下標(biāo)相對應(yīng)
  //刪除指定小豬,小龍
  list.remove(xiaolong);
  //將剩下的小豬信息進(jìn)行輸出
  System.out.println("刪除之后還有"+list.size()+"只小豬,\n分別是:");
  for(int i=0;i<list.size();i++){
   /**
    * Object get(int index)返回指定索引位置處的元素。取出的元素是Object類型,
    * 使用前需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換
    */
   Pig center=(Pig)list.get(i);//所以需要強(qiáng)轉(zhuǎn)為Pig的類型

   System.out.println(center.getName()+","+center.getSex());
  }

  System.out.println("*******************************************************");
  //5.判斷集合中是否包含指定小豬
  if (list.contains(xiaojia)){//使用list.contains()方法進(jìn)行判斷
   System.out.println("集合中有小佳");
  }else{
   System.out.println("集合中沒有小佳");
  }
 }
}

測試運(yùn)行結(jié)果如下:

三: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;

/**
 * 使用LinkedList集合操作數(shù)據(jù)
 */
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(與數(shù)組相同,從0開始)

  //為小豬排序
  LinkedList list=new LinkedList();
  //直接將元素添加排序
  list.add(xiaolong);
  list.add(longlong);
  list.addFirst(jiajia);//將佳佳添加到第一個(gè)位置
  list.addLast(xiaojia);//將小龍?zhí)砑拥阶詈笠粋€(gè)位置

  //list.add(jiajia);//List 接口存儲一組不唯一,有序(插入順序)的對象

  //2.獲得小豬的總數(shù)
  //通過list.size()方法獲取元素的個(gè)數(shù)
  list.size();
  System.out.println("小豬的總數(shù)為"+list.size());

  //3.逐條打印小豬的信息

  //方法一:通過迭代器Iterator實(shí)現(xiàn)遍歷
  Iterator it=list.iterator();
  while (it.hasNext()){
   Pig center=(Pig)it.next();
   System.out.println(center.getName()+","+center.getSex());
  }

  //方法二:for循環(huán)與get()方法配合實(shí)現(xiàn)遍歷
//  for(int i=0;i<list.size();i++){
//   Pig pig=(Pig)list.get(i);
//   System.out.println(pig.getName()+","+pig.getSex());
//  }

  System.out.println("************************************************");

  //4.
  //獲取第一只小豬的信息
  Pig center=(Pig)list.getFirst();
  System.out.println("第一條狗狗信息是:"+center.getName()+","+center.getSex());
  //獲取最后一只小豬的信息
  Pig center1=(Pig)list.getLast();
  System.out.println("最后一條狗狗信息是:"+center1.getName()+","+center1.getSex());

  System.out.println("*****************************************************");

  //5.刪除第一只小豬和最后一只小豬
  list.removeFirst();
  list.removeLast();

  System.out.println("*****************************************************");

  //6.輸出剩下小豬的信息
  System.out.println("剩下還有"+list.size()+"只小豬,\n分別是:");
  for(int i=0;i<list.size();i++){
   Pig pig=(Pig)list.get(i);
   System.out.println(pig.getName()+","+pig.getSex());
  }
  //7.判斷集合中是否存在小佳
  if(list.contains(xiaojia)){
   System.out.println("集合中存在小佳");
  }else{
   System.out.println("集合中不存在小佳");
  }
 }
}

測試運(yùn)行結(jié)果如下:

以上就是區(qū)分Java中的ArrayList和LinkedList的詳細(xì)內(nèi)容,更多關(guān)于Java中ArrayList和LinkedList的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 一文詳解Redisson分布式鎖底層實(shí)現(xiàn)原理

    一文詳解Redisson分布式鎖底層實(shí)現(xiàn)原理

    這篇文章主要詳細(xì)介紹了Redisson分布式鎖底層實(shí)現(xiàn)原理,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • spring boot整合netty的實(shí)現(xiàn)方法

    spring boot整合netty的實(shí)現(xiàn)方法

    這篇文章主要介紹了spring boot整合netty的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Spring注解@Autowired和@Resource的區(qū)別詳解

    Spring注解@Autowired和@Resource的區(qū)別詳解

    這篇文章主要介紹了Spring注解@Autowired和@Resource的區(qū)別詳解,@Autowired與@Resource都可以用來裝配bean,都可以寫在字段或setter方法上,@Resource是JDK提供的注解,默認(rèn)按照名稱進(jìn)行裝配,名稱可通過name屬性進(jìn)行指定,需要的朋友可以參考下
    2023-12-12
  • Mybatis之RowBounds分頁原理詳解

    Mybatis之RowBounds分頁原理詳解

    這篇文章主要介紹了Mybatis之RowBounds分頁原理詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 關(guān)于Controller 層返回值的公共包裝類的問題

    關(guān)于Controller 層返回值的公共包裝類的問題

    本文給大家介紹Controller 層返回值的公共包裝類-避免每次都包裝一次返回-InitializingBean增強(qiáng),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-09-09
  • Java中Https發(fā)送POST請求[親測可用]

    Java中Https發(fā)送POST請求[親測可用]

    這篇文章主要介紹了Java中Https發(fā)送POST請求[親測可用],本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-05-05
  • Java編寫的24點(diǎn)紙牌游戲

    Java編寫的24點(diǎn)紙牌游戲

    這篇文章主要介紹了Java編寫的24點(diǎn)紙牌游戲的相關(guān)資料,需要的朋友可以參考下
    2015-03-03
  • Java獲取網(wǎng)頁數(shù)據(jù)步驟方法詳解

    Java獲取網(wǎng)頁數(shù)據(jù)步驟方法詳解

    這篇文章主要介紹了Java獲取網(wǎng)頁數(shù)據(jù)步驟方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • java中帶參數(shù)的try(){}語法含義詳解

    java中帶參數(shù)的try(){}語法含義詳解

    這篇文章主要介紹了java中帶參數(shù)的try(){}語法含義詳解,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java將Exception信息轉(zhuǎn)為String字符串的方法

    Java將Exception信息轉(zhuǎn)為String字符串的方法

    今天小編就為大家分享一篇Java將Exception信息轉(zhuǎn)為String字符串的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10

最新評論

瑞金市| 石阡县| 五寨县| 广宗县| 辽源市| 广丰县| 宁明县| 马鞍山市| 霍林郭勒市| 宁河县| 麟游县| 尉犁县| 汽车| 涟水县| 天气| 北票市| 贡山| 喀喇沁旗| 张家港市| 宁夏| 浮梁县| 天祝| 探索| 新巴尔虎左旗| 蕉岭县| 嘉兴市| 巴中市| 吉林省| 新兴县| 海门市| 芒康县| 唐河县| 麟游县| 高州市| 琼海市| 大埔县| 龙海市| 加查县| 龙山县| 建宁县| 蒙阴县|