자바 의 ArrayList 와 LinkedList 를 구분 합 니 다.

1.Array List 와 LinkedList 의 대체적인 차 이 는 다음 과 같다.
1.ArrayList 는 동적 배열 에 기반 한 데이터 구 조 를 실현 하고 ArrayList 는 길이 가 변 적 인 배열 을 실현 하여 메모리 에 연속 적 인 공간 을 분배 합 니 다.요소 와 무 작위 접근 요 소 를 옮 겨 다 니 는 효율 이 높 습 니 다.
2.LinkedList 는 링크 의 데이터 구 조 를 바탕 으로 요 소 를 삽입,삭제 할 때 효율 이 비교적 높다.  그러므로:[삽입,삭제 작업 이 빈번 할 때 LinkedList 를 사용 하여 효율 을 높 일 수 있 습 니 다]LinkedList 는 머리 와 꼬리 요 소 를 추가 하고 삭제 하 는 방법 을 제공 합 니 다.첫 번 째 와 마지막 요 소 를 삽입/삭제 하 는 효율 이 비교적 높 습 니 다.
3:Array List 와 LinkedList 는 모두 List 인터페이스의 실현 으로 모두 유일 하지 않 고 질서 있 는 대상 을 저장 하고 요 소 를 추가,삭제 하 는 등 작업 을 한다.[즉,List 의 성질]
4.랜 덤 액세스 get 과 set 에 대해 Array List 는 LinkedList 보다 낫다 고 생각 합 니 다.LinkedList 는 바늘 을 움 직 여야 하기 때 문 입 니 다.
5.추가 및 삭제 작업 add 와 remove 에 대해 서 는 linedList 가 우세 합 니 다.ArrayList 가 데 이 터 를 이동 해 야 하기 때 문 입 니 다.
6:LinkedList 가 ArrayList 보다 메모리 차지
eg:(코드 예시 01)----Array List 와 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<N;i++) {
       list.add(0, o);
      }
     return System.currentTimeMillis()-start;
    }
  static long readList(List list){   //        
     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+"   :"+timeList(new ArrayList()));
     System.out.println("LinkedList  "+N+"   :"+timeList(new LinkedList()));

    List list1=addList(new ArrayList<>());
    List list2=addList(new LinkedList<>());
    System.out.println("ArrayList  "+N+"   :"+readList(list1));
    System.out.println("LinkedList  "+N+"   :"+readList(list2));
   }

이상 의 결 과 를 통 해 저 희 는 ArrayList 가 데 이 터 를 읽 기 에 더욱 적합 하고 linkedList 가 더 많 을 때 데 이 터 를 추가 하거나 삭제 하 는 것 을 알 수 있 습 니 다.
Array List:내 부 는 긴 배열 로 이 루어 지기 때문에 get 과 set 방법 으로 시간 이 걸 리 지만 요 소 를 삽입 하고 삭제 하면 삽입 과 삭제 의 위치 가 표 끝 에 있 지 않 으 면 코드 비용 이 많이 듭 니 다.배열 의 이동 이 필요 하기 때 문 입 니 다.
링크 드 리스트:더 블 링크 를 사용 하여 이 루어 지기 때문에 get 은 머리 와 가 까 운 곳 에 위치 하지 않 는 한 자원 을 많이 소모 합 니 다.그러나 요 소 를 삽입 하고 삭제 하 는 데 는 소수의 시간 이 걸린다.
2.Array List 와 LinkedList 의 공유 방법(즉,List 의 방법):

eg:(코드 예시 02)----Array List 코드 예시

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        
 */
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<list.size();i++){
   Pig center=(Pig)list.get(i);//  list.get()     Object   ,       Pig   
   System.out.println(center.getName()+","+center.getSex());
  }

  //   :     Iterator    
//  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);//        
  //      ,  
  list.remove(xiaolong);
  //            
  System.out.println("      "+list.size()+"   ,
:"); for(int i=0;i<list.size();i++){ /** * Object get(int index) 。 Object , * */ Pig center=(Pig)list.get(i);// Pig System.out.println(center.getName()+","+center.getSex()); } System.out.println("*******************************************************"); //5. if (list.contains(xiaojia)){// list.contains() System.out.println(" "); }else{ System.out.println(" "); } } }
테스트 실행 결 과 는 다음 과 같 습 니 다.

3.링크 드 리스트 의 독특한 방법:

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      
 */
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<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()+"   ,
:"); 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(" "); } } }
테스트 실행 결 과 는 다음 과 같 습 니 다.

이상 은 자바 의 Array List 와 LinkedList 를 구분 하 는 상세 한 내용 입 니 다.자바 의 Array List 와 LinkedList 에 관 한 자 료 는 다른 관련 글 을 주목 하 세 요!

좋은 웹페이지 즐겨찾기