Collection || Map - 다름
Collection 은 순서나 집합적인 저장공간임
Map 은 키와 값으로 데이터 핸들링
Collection - List - LinkedList , Stack, Vector, ArrayList
- Set - HashSet , SortedSet
ArrayList - 배열을 기반으로 리스트
인덱스가 있는 요소는 해당하는 위치를 빠르게 찾을수 있는 장점이 있음(조회)
단 추가하거나 삭제할때는 많은 메모리를 잡아먹음
추가와 삭제에 조금더 빠른 LinkedList 얘는 조회는 빠르게 안되는 이유가 뭔지? index 가 없나?
보통 LinkedList 는 기차? 구조로 머리부터 ------ 꼬리 구조로 되어 있음 즉 index 가 없음? O(N)
주요 인터페이스로는 List , Map, Set 제공
List 는 데이터의 순서가 유지 되며, 중복 저장이 가능한 컬렉션 구현
Set 은 순서가 유지되지 않으며 중복 저장이 불가능 , 집합적인 저장 공간
(알고리즘 문제 , 중복되는 값을 지우고 싶을때, 추상화가 되어 있음)
Map 은 키와 값의 쌍으로 데이터 저장, 데이터의 순서 유지 안됨, 키는 중복저장 불가능 값은 가능
map을 순회하기 위해서는 set 으로 바꿔야 가능
for(map.Entry<String, Interger> entry : map.entrySet()){
}
LinkHashMap -> 순서대로 나옴
List
ArrayList
import java.util.ArrayList;
public class ListTest {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
//추가
list.add("java");
list.add("egg");
list.add("tree");
//길이 - 배열의 length
int size = list.size();
System.out.println("size : " + size);
//특정 인게스의 객체 얻기
String skill = list.get(0);
System.out.println("0번째 인덱스의 값 : " + skill);
//저장된 총 객체 수 만큼 조회
for(int i = 0; i < list.size(); i++){
String str = list.get(i);
System.out.println(i + " : " + str);
}
//for-each 문으로 순회
for(String str : list){
System.out.println(str);
}
//제거
list.remove(0);
System.out.println("0번째 인덱스를 지운 list : " + list);
}
}
LinkedList
// ArrayList<String> list = new ArrayList<>();
LinkedList<String> list = new LinkedList<>();
위에 코드를 아래처럼 바꿔도 아래 해당하는문을 안바꿔도 정산적으로 실행이 됨
'IT > JAVA' 카테고리의 다른 글
JAVA - 람다(Lambda) (0) | 2024.12.02 |
---|---|
JAVA - 애너테이션(Annotation) (1) | 2024.12.02 |
JAVA - Collection 3) 예외처리 (1) | 2024.11.29 |
JAVA - Collection 2) 제네릭 (0) | 2024.11.29 |
JAVA - Collection 1) 열거형 (0) | 2024.11.29 |