JAVA/Java Collection Framwork

Java 자료구조 완벽 이해: ArrayList, LinkedList, Vector의 모든 것 - 코드카인 티스토리

CodeCaine Explorer 2024. 12. 18. 09:12
728x90
반응형
SMALL

안녕하세요😊 코드카인 여러분!

여러분은 오늘 ArrayList, LinkedList, 그리고 Vector에 대해 배우며, 이들 사이의 차이를 쉽게 이해할 수 있게 될 거예요! 😊 자, 이 세 가지 자료구조를 다양한 상황에서 어떻게 활용할 수 있는지 살펴보겠습니다.


📚 ArrayList, LinkedList, Vector란 무엇일까요?

이 세 가지는 모두 Java의 List 인터페이스를 구현한 클래스입니다.
즉, DATA를 순차적으로 저장하고 관리할 수 있게 도와주는 도구들인데요, 각각의 특징과 사용법이 조금씩 달라요. 마치 승용차, SUV, 스포츠카처럼 쓰임새에 따라 최적화된 기능을 제공하죠.


ArrayList: 빠르고 간편한 DATA 관리🚗

ArrayList는 승용차처럼 일반적인 상황에 적합한 자료구조예요.
DATA를 배열에 저장하며, 인덱스를 통해 빠르게 접근할 수 있어요.

  • 특징

    • 배열 기반으로 DATA를 저장
    • 검색 속도가 빠름 (O(1))
    • 추가/삭제 속도는 상대적으로 느림 (O(n))
  • 사용 예시

    import java.util.ArrayList;
    
    public class ArrayListExample {
        public static void main(String[] args) {
            ArrayList<String> list = new ArrayList<>();
            list.add("Apple");
            list.add("Banana");
            list.add("Cherry");
    
            System.out.println(list.get(1)); // Output: Banana
        }
    }

💡 요약: DATA의 크기가 자주 변하지 않고, 빠른 검색이 중요한 경우 사용하세요!


LinkedList: 유연한 DATA 관리🛻

LinkedListSUV처럼 유연하고 다양한 환경에서 강력한 자료구조입니다.
DATA가 노드(node) 단위로 저장되며, 각 노드는 다음 DATA의 주소를 가리켜요.

  • 특징

    • 추가/삭제가 빠름 (O(1) - 노드 참조 시)
    • 검색 속도가 느림 (O(n))
    • 메모리 소비가 큼 (주소 정보 추가 저장)
  • 사용 예시

    import java.util.LinkedList;
    
    public class LinkedListExample {
        public static void main(String[] args) {
            LinkedList<String> list = new LinkedList<>();
            list.add("Dog");
            list.add("Cat");
            list.add("Rabbit");
    
            list.remove(1); // Remove "Cat"
            System.out.println(list); // Output: [Dog, Rabbit]
        }
    }

💡 요약: DATA의 추가/삭제가 빈번하게 발생하는 경우 적합해요!


Vector: 과거의 스포츠카🏎️

Vector초기 자바의 고급 클래스로, 멀티스레드 환경을 지원합니다.
하지만 요즘에는 동기화(synchronization)를 고려하지 않은 ArrayList가 주로 사용돼요.

  • 특징

    • Thread-Safe: 동기화가 자동으로 처리됨
    • 성능은 ArrayList에 비해 다소 떨어짐
    • 거의 사용되지 않음 (대부분 ArrayList로 대체)
  • 사용 예시

    import java.util.Vector;
    
    public class VectorExample {
        public static void main(String[] args) {
            Vector<Integer> vector = new Vector<>();
            vector.add(10);
            vector.add(20);
    
            System.out.println(vector.size()); // Output: 2
        }
    }

💡 요약: 멀티스레드 환경이 필요할 경우 사용하지만, 대체 옵션을 고려하세요!


🚦 이들의 차이점 한눈에 보기!

특징 ArrayList LinkedList Vector
기반 구조 배열(Array) 노드(Node) 배열(Array)
검색 속도 빠름 (O(1)) 느림 (O(n)) 빠름 (O(1))
추가/삭제 속도 느림 (O(n)) 빠름 (O(1)) 느림 (O(n))
Thread-Safe
주요 용도 일반적인 DATA 관리 DATA 삽입/삭제 많음 멀티스레드 환경

😊 마무리하며..

오늘은 ArrayList, LinkedList, Vector의 특징과 차이점을 알아보았어요. 🚀
각 상황에 맞는 자료구조를 선택하면 성능을 크게 향상시킬 수 있답니다.
여러분도 차근차근 코드를 작성하며 차이를 느껴보세요. 연습하면 누구나 잘할 수 있습니다! 😊

728x90
반응형
SMALL