20240913 - Collection : List

Dodo Lee·2024년 9월 13일

[ 컬렉션 : Collection ]

1. 정의 (List, Set, Map)

자바에서 제공하는 자료구조를 담당하는 프레임워크(틀)

<장점>
추가, 삭제, 정렬 드으이 기능처리가 간단하게 해결 되어
자료구조적 알고리즘을 구현할 필요 없음

2. 자료구조

데이터(자료)를 메모리에서 구조적으로 처리하는 방법론

자료구조

1) 단순구조(변수)
2) 선형구조
3) 비선형구조
4) 파일구조

3. 배열의 문제점 & 컬렉션의 장점

1) 배열의 문제점

(1) 한 번 크기를 지정하면 변경할 수 없다
- 공간 크기가 부족하면 에러가 발생 → 할당시 넉넉한 크기로 할당하게 됨(메모리 낭비)
- 필요에 따라 공간을 늘리거나 줄일 수 없음
(2) 배열에 기록된 데이터에 대한 중간 위치의 추가, 삭제가 불편하다
- 추가, 삭제할 데이터부터 마지막 기록된 데이터까지 하나씩 뒤로 밀어내고 추가해야 함
(복잡한 알고리즘)
(3) 한 타입의 데이터만 저장 가능

2) 컬렉션의 장점

(1) 저장하는 크기의 제약이 없다
(2) 추가, 삭제, 정렬 등의 기능 처리가 간단하게 해결된다( add(), remove() )
- 자료를 구조적으로 처리 하는 자료구조가 내장되어 있어 알고리즘 구현이 필요 없음
(3) 여러 타입의 데이터가 저장 가능하다
- 객체만 저장할 수 있기 때문에 필요에 따라 기본 자료형을 저장해야 하는 경우
Wrapper클래스 사용

3) Wrapper클래스 8가지

Boolean, Character, Byte, Short, Intedger, Long, Float, Double

4. 컬렉션의 주요 인터페이스

(1) List : 기본적으로 배열 모양을 가짐

  - 순서를 유지하고 저장
  - 중복 저장 가능

(2) Set : 주머니 모양의 집합

  - 순서를 유지하지 않고 저장
  - 중복 저장 안됨(중복데이터 들어오면 제거)

(3) Map : 좌표를 찍으면 주소가 나옴

  - key : value (키와 값의 쌍으로 저장)
  - value 중복 저장 가능
  - key : 중복 불가

※참고

자바 : 멀티스레드 지원(여러 스레드를 만들어 사용 가능)
-> 싱글 스레드( main() -> 메인스레드 )
-> Thread 클래스 상속
멀티스레드가 필요한 경우 : 어려 작업을 동시에 처리하고 싶을 때
ex) 대용량 데이터 처리
ex) UI가 응답성 유지하면서 백그라운드에서 작업을 실행하고 싶을 때
- 파일 다운로드 중에도 사용자가 UI를 조작할 수 있게끔 할 때

5. List

1) 주요 사용

ArrayList : 검색
LinkedList : 삽입, 수정, 삭제

2) 정렬
Comparable

public int cmpareTo(Student other){
  return this.age - other.age;
}
public void sortByAge(){
  Collections.sort(studetList);
}

Comparator

public void sortByName(){
  Comparator<Student> nameComparator = Comparator.comparing(Student::getName);
  Collections.sort(studentList, nameComparator);
  for(Student std : studentList){
    System.out.println(std);
  }
}

comparing() 는 기본적으로 오름 차순
-> 내림 차순 원하면 reversed(); 사용
의미)
Student객체의 이름(name)을 기준으로 학생객체를 비교하는Comparator 객체를 생성
Comparator 인터페이스의 static 메서드인
comparing()을 사용하여 Comparator 객체를 생성
Student::getName -> 메서드 레퍼런스(Method Referance)
Student 클래스의 getName() 메서드를 가리키는 것
-> 이 메서드를 비교의 키로 사용하여 각 Student 객체를 비교하고 정렬함

profile
연습생

0개의 댓글