2025.01.13
활동 목표
Java 컬렉션 프레임워크, 제네릭 복습
활동 결과
-컬렉션 프레임워크_LinkedList
배열의 크기 변경 불가, 비순차적인 데이터의 추가 또는 삭제에 시간이 걸린다는 단점을 보완한 자료구조.
불연속적으로 존재하는 데이터를 서로 연결한 형태로 구성
각 node들이 자신과 연결된 다음 node에 대한 참조(주소값)와 데이터로 구성
*이동방향이 단방향이라 다음 요소에 대한 접근은 쉽지만 이전 요소에 대한 접근은 어려움
->보완한 것: 더블 링크드 리스트(링크드 리스트 + 이전 요소의 주소를 저장)
=>데이터 개수 변경이 잦다면 LinkedList, 없다면 ArrayList
어레이리스트와 링크드리스트를 조합해서 사용하기
데이터를 저장할 때: 어레이리스트
작업할 때: 링크드리스트
ArrayList al = new Arraylist(1000000);
for(int i = 0; i<1000000; i++) al.add(i+"");
LinkedList ll = new LinkedList(al);
for(int i = 0; i<10000; i++) ll.add(500, "X");
컬렉션 프레임웍에 속한 대부분의 컬렉션 클래스들은 이처럼 서로 변환이 가능한 생성자를 제공하므로 다른 컬렉션 클래스로 데이터를 간단히 옮길 수 있다.
-제네릭
어떤 자료형이든 상관없이 정의해서 사용할 수 있음
public class DynamicAttendanceBook<T> {
private T[] students;
public int count;
}
*T는 String, Integer, 다른 객체 등이 될 수 있음
제네릭 클래스는 객체를 생성할 때 Generic 타입이 정해짐
DynamicAttendanceBook<String> ab1 = new DynamicAttendanceBook<String(6)>;
DynamicAttendanceBook<Integer> ab2 = new DynamicAttendanceBook<Integer(6)>;
T가 각각 스트링, 정수 타입으로 전환되어 객체가 생성됨.
public class DynamicAttendanceBook<T> {
private T[] students;
public int count;
public DynamicAttendaceBook(int size) {
students = (T[])new Object[size];
count = 0;
}
}
생성자 내부에서 students 배열을 만들어서 초기화 시키는데, T가 어떤 클래스 타입인지 알 수 없기 때문에 모든 객체가 상속하고 있는 Object 객체로 만들고 T로 캐스팅을 수행함.
참고 문헌
1. 남궁성, Java의 정석, 도우출판, 2016.
'교내|외 활동 > 24-25 동계 모각코' 카테고리의 다른 글
| 24-25 동계 모각코 | 5회차 (0) | 2025.01.31 |
|---|---|
| 24-25 동계 모각코 | 4회차 (0) | 2025.01.24 |
| 24-25 동계 모각코 | 2회차 (0) | 2025.01.07 |
| 24-25 동계 모각코 | 1회차 (0) | 2025.01.02 |
| 2024-2025 동계 모각코 | 개인 목표 (0) | 2025.01.02 |