[JAVA] 5주차 정리: 엔트리포인트, 컬렉션, 제네릭
1. Entry Point
-
엔트리 포인트(Entry Point)란 프로그램이 시작되는 시작점을 의미한다.
-
main
다수의 프로그래밍 언어에서 main 함수가 엔트리 포인트로 사용된다. (ex c, c++, java 등) -
다만, 스크립트 언어의 경우 정해진 엔트리 포인트는 main 함수가 아닌 인터프리터가 코드를 읽기 시작한 부분부터 진행된다.(예: python, javascript 등)
-
java의 엔트리 포인트
java의 경우 API에서는 public static void main (String[] args) 단 한개만 엔트리 포인트로 정의했기 때문에, 오버로딩 된 다른 형태의 main함수는 엔트리 포인트로 동작하지 않는다.
2. 컬렉션 Collection
-
데이터의 집합을 의미한다.
- 배열이 가진 고정 크기의 단점을 극복하기 위해 객체들을 쉽게 삽입, 삭제, 검색할 수 있는 가변 크기의 container이다.
- 데이터를 저장, 회수, 조작하기에 용이함
- 가변 크기로서 객체의 개수를 염려할 필요 없음
-
컬렉션 내의 한 객체가 삭제되면 컬렉션이 자동으로 자리를 옮겨줌
- 특징)
- Generics 기법으로 만들어져 있음
- 컬렉션의 요소는 객체들만 가능함 (primitive data type은 불가능함)
✏️컬렉션 프레임워크 Collection Framework
-
다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미한다.
-
데이터를 저장하는 data structure와 데이터를 처리하는 algorithm을 구조화하여 클래스로 구현해 놓은 것이다.
* 프로그램 = 자료구조(스택, 큐, 리스트, 배열, 맵, 테이블, 셋 등) + 알고리즘 * Interface(메소드 정의, 오버라이딩)를 사용하여 implementation(구현) 됨
3. 제네릭 Generics
- 모든 종류의 타입을 다룰 수 있도록, class나 method를 generic type을 이용하여 선언하는 기법이다.
-
클래스 코드를 찍어내듯이 생산할 수 있도록 일반화시키는 도구이다.
- 특징)
- 제네릭을 사용하면 잘못된 타입이 들어올 수 있는 것을 컴파일 단계에서 방지할 수 있다.
- 클래스 외부에서 타입을 지정해주기 때문에 따로 타입을 체크하고 변환해줄 필요가 없다. 즉, 관리하기가 편하다.
- 비슷한 기능을 지원하는 경우 코드의 재사용성이 높아진다.
✏️Iterator Interface
-
자바의 컬렉션 프레임워크는 컬렉션의 저장된 요소를 읽어오는 방법으로 iterator 인터페이스로 표준화 하고 있다.
-
벡터, 배열리스트, 링크드리스트, 셋과 가티 요소가 순서대로 저장된 컬렉션에서 요소를 순차 검색할 때 java.util 패키지의 iterator
인터페이스를 사용하면 편리하다. - Iterator(반복자) 인터페이스 메소드
- boolean hasNext() : 이터레이션이 다음 방문할 요소를 가지고 있으면 true, 그렇지 않으면 false 리턴
- E next() : 이터레이션의 다음 요소 리턴
- void remove() : 마지막으로 리턴된 요소를 현재 컬렉션에서 제거
- Iterator(반복자) 인터페이스 메소드
✏️Collection Interface
-
데이터의 집합을 표현하는 인터페이스로 최상위 인터페이스이다.
- 주요 메소드 fundamental methods
-
int size() : 요소의 개수 리턴
-
boolean isEmpty() : 컬렉션 비어있으면 true를 리턴
-
boolean contains(Object element) : 요소를 포함하고 있으면 true 리턴
-
boolean add(Object element) : 요소를 추가하고 성공적으로 추가한 경우 true 리턴
-
boolean remove(Object element) : 요소를 삭제하고 성공적으로 삭제한 경우 true를 리턴
-
Iterator iterator() : 컬렉션 요소의 반복자를 리턴
-
- 주요 메소드 fundamental methods