개발시에 실제 다루고자하는 데이터의 특징을 파악하고 어떤 인터페이스를 구현할 컬렉션 클래스를 사용해야하는지 잘 알아야 함으로써 각 인터페이스의 특징과 차이점을 잘이해하고 있어야 한다.
✅컬렉션 프레임웍크 핵심 인터페이스
✅ArrayList
ArrayList란 일반 배열을 사용하지만, 일반 배열과 다른점은 맴버변수로 object 배열을 선언하기떄문에 다양한 타입의 객체를 저장할수있다.
✅ArrayList 에 저장된 객체의 삭제 과정
- ArrayList에 저장된 세 번쨰 데이터를(data[2])를 삭제하는 과정 (1/2).
list.remove(2);를 호출
- 삭제할 데이터 아래의 데이터를 한 칸씩 위로 복사해서 삭제할 데이터를 덮어쓴다.
- 데이터가 모두 한 칸씩 이동 했으므로 마지막 데이터는 null로 변경한다.
- 데이터가 삭제 되어 데이터의 개수가 줄었으므로 size값을 감소시킨다.(마지막 데이터를 삭제하는 경우에는 1 번의 배열의 복사 과정은 필요없다.
- ArrayList에 저장된 객체의 삭제과정(2/2).
ArrayList에 저장된 첫 번쨰 부터 삭제하는 경우 (배열 복사 발생)
결과 ==> 전부삭제가 안된다
✅ 배열의 장점과 단점
- 장점
- 배열은 구조가 간단하고 데이터를 읽는 데 걸리는 시간(접근시간, access time)이 짧다.
- 배열은 구조가 간단하고 데이터를 읽는 데 걸리는 시간(접근시간, access time)이 짧다.
- 단점
- 배열은 한번 생성하면 크기를 변경할 수 없다.
-크기를 변경해야 하는 경우 새로운 배열을 생성 후 데이터를 복사힌 다음, 참조를 변경해야함.
-크기 변경을 피하기 위해 충분히 큰 배열을 생성하면, 메모리가 낭비됨. - 비순차적인 데이터의 추가,삭제에 시간이 많이걸린다.(배열의 중간에 값을 추가 또는 삭제하는경우)
-데이터를 추가하거나 삭제하기 위해,다른 데이터를 옮겨야 함. -그러나 순차적인 데이터 추가(끝에 추가)와 삭제(끝부터 삭제)는 빠르다.
- 배열은 한번 생성하면 크기를 변경할 수 없다.
✅배열의 단점을 보안한 LinkedList
- 배열의 단점을 보완하기 위해 나타난 자료구조가 LinkedList이다.
- 연결 리스트(LinkedList)는 불연속적으로 존재하는 데이터를 서로 연결(link)한 형태로 구성되어 있다.
- 장점
- 데이터의 삭제: 단 한번의 참조 변경만으로 가능
- 데이터 추가:한 번의 Node 객체 생성과 두 번의 참조 변경만으로 가능
- 단점
- LinkedList는 순차적 접근이기 때문에 검색의 속도가 느리다.
(연결 리스트에 5개의 노드가 있다고 가정하면 세번쨰 노드에 접근하려면 첫 번쨰 노드 부터 차례대로 찾아가야 한다. 배열처럼 한 번에 갈 수 없다.)
ref -Java의 정석(남궁성)
'Develop > Java' 카테고리의 다른 글
[Java] JVM , 자바 프로그램 실행 과정 (0) | 2024.08.27 |
---|---|
[Java] String, StringBuilder, StringBuffer의 차이 (0) | 2024.07.16 |
[Java/Error] 기본 생성자가 필요한 이유 (0) | 2024.03.02 |
[Java ] 컬렉션 프레임워크 map 이해하기 (1) | 2024.01.27 |