Collections (Java Platform SE 8)
int[] numbers = new int[3];
numbers[0] = 10;
numbers[1] = 20;
numbers[2] = 30;
// ❌ 요소 추가시 에러발생
numbers[3] = 40;
ArrayList<Integer> arrayList = new ArrayList<>();
arrayList.add(10);
arrayList.add(20);
arrayList.add(30);
// ✅ 크기 제한 없이 무한대로 추가 가능
arrayList.add(40);
...
인터페이스 | 특징 | 대표적인 구현체 |
---|---|---|
List | 순서 유지, 중복 허용 | ArrayList |
Set | 순서 없음, 중복 불가 | HashSet |
Map | 키-값 구조, 키 중복 불가 | HashMap |
index
로 요소에 접근List
와 배열의 차이List
는 자료형 크기가 고정 아닌, 데이터 양에 따라 동적으로 늘아났다 줄어들 수 있음List
인터페이스를 구현한 대표적인 구현체ArrayList
, LinkedList
ArrayList<String> names = new ArrayList<>();
// ✅ 추가
names.add("Spartan");
names.add("Steve");
names.add("Isac");
names.add("1");
names.add("2");
// ✅ 순서 보장
System.out.println("names = " + names);
// ✅ 중복 데이터 허용
names.add("Spartan");
// ✅ 단건 조회
System.out.println("1 번째 요소 조회: " + names.get(0));
// ✅ 데이터 삭제
names.remove("Steve");
‼️
ArrayList
는List
로 자료형을 선언하자!
다형성
을 활용해List 인터페이스
로ArrayList
구현체를 받으면
나중에 다른 구현체(LinkedList
,Vector
) 로 변경할 때 코드 수정을 최소화할 수 있습니다.
- 실무에서는 리스트를 선언할 때 대부분 아래와 같이
List
타입으로 받는 것을 권장합니다.List<Integer> arrayList = new ArrayList<>();
get(index)
메소드가 존재하지 않음null
도 하나만 저장할 수 있음Set
인터페이스를 구현한 대표적인 구현체HashSet
, TreeSet
HashSet<String> uniqueNames = new HashSet<>();
// ✅ 추가
uniqueNames.add("Spartan");
uniqueNames.add("Steve");
uniqueNames.add("Isac");
uniqueNames.add("1");
uniqueNames.add("2");
// ⚠️ 순서를 보장 안함
System.out.println("uniqueNames = " + uniqueNames);
// ❌ get 사용 불가
uniqueNames.get(0);
// ⚠️ 중복 불가
uniqueNames.add("Spartan");
// ✅ 제거
uniqueNames.remove("Spartan");
키(Key) - 값(Value)
의 쌍으로 연관지어 이루어진 데이터의 집합값(Value)
은 중복될 수 있지만, 키(Key)
는 중복될 수 없다.Map
인터페이스를 구현한 대표적인 구현체HashMap
, TreeMap
Hashtable
을 보완한 컬렉션Key-Value
을 묶어 하나의 데이터로 저장함null
가능HashMap<String, Integer> memberMap = new HashMap<>();
// ✅ 추가
memberMap.put("Spartan", 15);
memberMap.put("Steve", 15); // ✅ 값은 중복 가능
memberMap.put("Isac", 1);
memberMap.put("John", 2);
memberMap.put("Alice", 3);
// ⚠️ 순서 보장 안함
System.out.println("memberMap = " + memberMap);
// ⚠️ 키 중복 불가
// 새로운 값으로 덮어씌워짐
memberMap.put("Alice", 5);
// ✅ 조회: 15
System.out.println(memberMap.get("Steve"));
// ✅ 삭제 가능
memberMap.remove("Spartan");
// ✅ 키 확인
Set<String> keys = memberMap.keySet();
System.out.println("keys = " + keys);
// ✅ 값 확인
Collection<Integer> values = memberMap.values();
System.out.println("values = " + values);
TreeSet
과 같은 원리)Key-Value
를 저장하여 빠른 검색(특히 범위 검색)이 가능함ArrayList
LinkedList
HashMap / HashSet
get()
의 성능이 O(1) )TreeMap / TreeSet
LinkedHashMap / LinkedHashSet
Queue
Stack, Hashtable
Java 컬렉션(Collection) 정리
Java Collections Framework 종류 총정리
챕터 3-3 : 컬렉션(Collection)