자바 의 ArrayList 와 LinkedList 를 구분 합 니 다.
9435 단어 JAVAArrayListLinkedList
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 에 관 한 자 료 는 다른 관련 글 을 주목 하 세 요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 객체 작성 및 제거 방법정적 공장 방법 정적 공장 방법의 장점 를 반환할 수 있습니다. 정적 공장 방법의 단점 류 공유되거나 보호된 구조기를 포함하지 않으면 이불류화할 수 없음 여러 개의 구조기 파라미터를 만났을 때 구축기를 고려해야 한다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.