반응형
📌 주요 학습 내용
오늘은 자바의 컬렉션 프레임워크 중 List, Set, Map의 기본 사용법과 특징, 그리고 동기화 처리 여부와 관련된 구현 클래스들을 학습했습니다.
📌 예제 코드
1. ArrayList를 이용한 객체 저장 및 삭제
List<Board> list = new ArrayList<>();
for (int i = 1; i <= 5; i++)
list.add(new Board("제목" + i, "내용" + i, "글쓴이" + i));
list.remove(2); // 인덱스 2번 객체 삭제
2. Vector를 활용한 동기화 처리
List<Board> list = new Vector<>();
Thread t1 = new Thread(() -> {
for (int i = 1; i <= 1000; i++)
list.add(new Board("제목" + i, "내용" + i, "글쓴이" + i));
});
3. LinkedList와 ArrayList의 성능 비교
List<String> list1 = new ArrayList<>();
List<String> list2 = new LinkedList<>();
for(int i = 0; i < 10000; i++)
list1.add(0, String.valueOf(i));
4. HashSet을 이용한 중복 제거 및 순회
Set<String> set = new HashSet<>();
set.add("Java");
set.add("Java"); // 중복 무시됨
5. 사용자 정의 객체 중복 제거 (hashCode, equals 오버라이딩)
public boolean equals(Object obj) {
if (obj instanceof Member target)
return name.equals(target.name) && (age == target.age);
return false;
}
6. HashMap 기본 사용법
Map<String, Integer> map = new HashMap<>();
map.put("홍길동", 95); // key 중복 시 마지막 값으로 덮어씀
7. Hashtable의 동기화 처리 확인
Map<String, Integer> map = new Hashtable<>();
// 두 스레드가 동시에 put 수행 → 안전
💡 포인트 정리
- ArrayList는 읽기 성능이 좋고, LinkedList는 삽입/삭제 성능이 좋다.
- Vector와 Hashtable은 동기화를 제공하지만 최신 코드에서는 Collections.synchronizedList 등을 활용하는 것이 일반적이다.
- Set은 중복을 허용하지 않으며, hashCode()와 equals()를 반드시 오버라이딩해야 정확한 중복 비교가 가능하다.
- HashMap은 키-값 쌍을 저장하며, 키 중복 시 마지막 값으로 대체된다.
- Map은 keySet()이나 entrySet()으로 전체 순회할 수 있다.
📌정리하자면, 이번 25일차 수업에서는 Java 컬렉션 프레임워크의 기본 구성요소인 List, Set, Map에 대해 학습하며 각 자료구조의 특징과 차이점, 그리고 동기화가 필요한 상황에서의 대응 방식을 실습했습니다. 특히 HashSet, HashMap, Hashtable, ArrayList, Vector, LinkedList 각각의 차이를 실제 코드로 비교하며 이해도를 높일 수 있는 시간이었습니다.
'국비' 카테고리의 다른 글
[ 28일차 161~168 ] 수업 정리 - 자바 (1) | 2025.05.23 |
---|---|
[ 27일차 153~160 ] 수업 정리 - 자바 (0) | 2025.05.22 |
[ 26일차 145~152 ] 수업 정리 - 자바 (0) | 2025.05.21 |
[ 24일차 129~136 ] 수업 정리 - 자바 (1) | 2025.05.19 |
[ 23일차 ] 수업 정리 - 시험 (0) | 2025.05.16 |
[ 22일차 119~128 ] 수업 정리 - 자바 (2) | 2025.05.15 |