코딩과 결혼합니다

[CS] 자료구조 : Java와 ArrayList, LinkedList 본문

2세/Computer Science

[CS] 자료구조 : Java와 ArrayList, LinkedList

코딩러버 2023. 10. 31. 18:12
728x90

✏️ArrayList

List 인터페이스를 구현하여 저장순서가 유지되고 중복을 허용한다. Object배열을 이용해서 데이터를 순차적으로 저장하고, 배열에 더 이상 저장할 공간이 없으면 보다 큰 새로운 배열을 생성해서 기존의 저장된 내용을 새로운 배열로 복사한 다음에 저장한다.

 

🔸Java - ArrayList 클래스 메서드

  1. add(element): 리스트의 끝에 새로운 요소를 추가합니다.
  2. add(index, element): 지정된 인덱스에 새로운 요소를 추가합니다.
  3. get(index): 지정된 인덱스에 해당하는 요소를 반환합니다.
  4. set(index, element): 지정된 인덱스에 해당하는 요소를 새로운 값으로 대체합니다.
  5. remove(index): 지정된 인덱스에 해당하는 요소를 삭제하고 그 값을 반환합니다.
  6. size(): 리스트의 요소 개수를 반환합니다.
  7. isEmpty(): 리스트가 비어있는지 여부를 반환합니다.
  8. clear(): 리스트의 모든 요소를 삭제합니다.
  9. contains(element): 리스트에 주어진 요소가 포함되어 있는지 여부를 반환합니다.
  10. indexOf(element): 주어진 요소의 첫 번째 등장하는 인덱스를 반환합니다.
  11. lastIndexOf(element): 주어진 요소의 마지막으로 등장하는 인덱스를 반환합니다.
  12. toArray(): 리스트의 요소들을 배열로 반환합니다.

 

🔸Java에서의 ArrayList 활용

  1. 데이터 베이스 조회 결과 저장
      DB에서 조회한 결과를 ArrayList에 저장하여 활용함으로 JAP를 통해 DB와 상호작용할 수 있다.

  2. 요청 파라미터의 컬렉션
      웹 요청의 파라미터를 받아와 처리할 수 있다. 여러 개의 값을 받아와 ArrayList에 저장하여 활용한다.

  3. 세션 데이터 관리
      HttpSession을 통해 ArrayList를 사용하여 세션에 저장된 데이터를 컬렉션 형태로 관리할 수 있다.
    HttpSession은 애플리케이션에서 클라이언트와 서버 간의 상태를 유지하기 위한 기술이다. 클라이언트가 서버에 접속한 후, 서버는 해당 클라이언트를 식별하고 상태 정보를 유지하기 위해 HttpSession 객체를 생성한다.
    ex ) 장바구니, 주문 정보 등의 유지 - 다른 페이지를 이동하거나 결제 과정을 거치더라도 데이터를 유지할 수 있다.

  4. 캐시 데이터 관리
      데이터베이스에서 조회한 결과를 ArrayList에 저장하여 캐시로 활용하여 빠른 데이터 접근을 가능하게 한다.

  5.  API 응답 데이터 구조
    RESTfull API를 개발할 때 ArrayLIst를 사용하여 API 응답 데이터를 구조화할 수 있다.

  6.  테스트 데이터 구성
    테스트 데이터를 구성하고, 테스트 케이스에서 활용할 수 있다.

✏️LinkedList

배열의 크기를 변경할 수 없고, 비순차적인 데이터의 추가 또는 삭제에 시간이 많이 걸리는 단점을 보완하기 위해서 만들어진 자료구조이다. 데이터가 불연속적으로 존재하고 링크드 리스트의 각 요소(node)들은 자신과 연결된 다음 요소에 대한 참조(주소값)와 데이터로 구성되어 있다.

 

🔸Java - LinkedList 클래스 메서드

  1. add(element): 리스트의 끝에 새로운 요소를 추가합니다.
  2. add(index, element): 지정된 인덱스에 새로운 요소를 추가합니다.
  3. get(index): 지정된 인덱스에 해당하는 요소를 반환합니다.
  4. remove(index): 지정된 인덱스에 해당하는 요소를 삭제하고 그 값을 반환합니다.
  5. size(): 리스트의 요소 개수를 반환합니다.
  6. isEmpty(): 리스트가 비어있는지 여부를 반환합니다.
  7. clear(): 리스트의 모든 요소를 삭제합니다.
  8. contains(element): 리스트에 주어진 요소가 포함되어 있는지 여부를 반환합니다.
  9. indexOf(element): 주어진 요소의 첫 번째 등장하는 인덱스를 반환합니다.
  10. lastIndexOf(element): 주어진 요소의 마지막으로 등장하는 인덱스를 반환합니다.
  11. toArray(): 리스트의 요소들을 배열로 반환합니다.

 

🔸Java에서의 LinkedList 활용

* ArrayList 보다는 덜 사용되지만, 요소의 삽입 및 삭제가 빈번한 상황에서 유용하다.

  1. 중복 요소 제거
    중복된 데이터를 처리하거나, 중복 요소를 필터링하는 등의 작업에 사용될 수 있다.

  2. 특정 요소의 앞 또는 뒤에 요소 삽입

  3. 이전/다음 요소 접근
    각 요소가 이전 요소와 다음 요소에 대한 참조를 가지고 있기 때문에, 이러한 접근에 용이하다.

  4. 연결 리스트로 구현된 스택
    메서드 호출 스택, 실행 취소/ 다시 실행 기능 등에 사용될 수 있다.

요소의 삽입 및 삭제가 빈번하면 ➡️ LinkedList

요소의 접근과 검색이 빈번하면 ➡️ ArrayList
성능 측면에서 어떠한 요소가 더 중요한지에 따라 해당 요소에 맞는 클래스를 적절하게 선택해서 사용한다.

'2세 > Computer Science' 카테고리의 다른 글

[CS] Caching  (0) 2023.11.03
[CS] MSA : MicroService Architecture  (0) 2023.11.02
[CS] 자료구조 : Java와 HashMap  (1) 2023.11.01
[CS] 자료구조 : Java와 Stack, Queue  (0) 2023.10.30
[CS] Proxy Server  (0) 2023.10.27