ArrayList/LinkedList

개굴이·2023년 9월 4일
0

Java

목록 보기
1/7
post-thumbnail

ArrayList

  • ArrayList는 크기가 자동으로 조정되므로 초기 크기를 정해주지 않아도 되며 요소를 추가하면 자동으로 배열의 크기가 늘어난다.
  • 순서가 있는 자료구조이다.
  • 중복된 요소를 허용한다.
  • 제너릭(Generic)을 사용하여 요소의 타입을 지정할 수 있으므로 타입 안정성을 보장한다.
// ArrayList 생성
ArrayList<String> arrayList = new ArrayList<>();

// 요소 추가
arrayList.add("apple");
arrayList.add("banana");
arrayList.add("orange");

// 요소 접근
String firstElement = arrayList.get(0);// apple
// 요소 삭제
arrayList.remove(1);
// 리스트 크기 확인
int size = arrayList.size();//2
//요소 수정
arrayList.set(1, "apple");
//요소 검색
arrayList.indexOf("apple");//0
//뒤에서부터 검색
arrayList.lastIndexOf("apple");//1
        
// 모든 요소 순회
for (String element : arrayList) {
	System.out.println("Element: " + element);
}

LinkedList

  • 연결 구조 : 각 요소는 데이터와 이전 요소를 참조하는 포인터, 그리고 다음 요소를 참조하는 포인터로 구성된다. 이로 인해 요소 간의 순서를 변경하거나 삽입, 삭제할 때에도 노드의 연결만 수정하면 되므로 배열에 비해 빠른 연산이 가능
  • 삽입 및 삭제의 용이성 : 요소를 중간에 삽입하거나 삭제하는 경우에 우수한 성능을 보인다. 배열과 달리 배열의 크기 조정이 필요 없기 때문
  • 인덱스를 이용한 빠른 접근 : 인덱스를 사용하여 요소에 빠르게 접근할 수 있다. 하지만 노드를 따라가야 하므로 상대적으로 느릴 수 있다.
  • 메모리 사용 : 배열에 비해 메모리 사용이 더 많을 수 있다.
  • 순회 및 반복 : Iterator나 for-each를 통해 요소를 순회할 수 있다.
// LinkedList 생성
LinkedList<String> linkedList = new LinkedList<>();

// 요소 추가
linkedList.add("apple");
linkedList.add("banana");
linkedList.add("orange");

// 요소 삽입
linkedList.add(1, "grape");
// 요소 삭제
linkedList.remove(2);

// 요소 순회
for (String fruit : linkedList)
	System.out.println(fruit);
        
// Iterator를 사용하여 요소 순회
Iterator<String> iterator = linkedList.iterator();
while (iterator.hasNext()) {
	String fruit = iterator.next();
	System.out.println("Fruit: " + fruit);
}

출처 openAI

0개의 댓글