상속
- expands : 부모의 메소드 오버라이딩 필요없음-직접 사용 가능, 다중상속 불가능, abstract 클래스 상속
- implements : 부모의 메소드 오버라이딩(재정의) 필수, 다중상속 가능, interface 상속
expands는 클래스를 확장하는 것이고 implements는 인터페이스를 구현하는 것이다.
List
- 객체 추가
- 객체 검색
- E get(int index)
- int size()
- 빈번한 객체 삭제와 삽입이 일어나는 곳에선 바람직하지 않음
- 중복 저장 가능 / null 저장 가능
- 인덱스를 통한 검색 속도가 빠르다.
- 내부 배열에 객체가 저장되고 제한 없이 객체를 추가할 수 있음
- O(n) : 삽입과 삭제의 시간복잡도, 최악의 시간을 나타내는 시나리오
- O(1) : 편집의 시간복잡도
⭐ArrayList
- 검색이 빠름
- 특정 인덱스의 객체 가져오기
- 객체 순회하기
- ⭐⭐⭐for문 사용하기
- O(N)
for(int i = 0; i<list.size(); i++) {
Board b = list.get(i)
System.out.println(b.getSubject() + "\t" + b.getContent() +
"\t" + b.getWriter());
}
System.out.prinln();
LinkedList
- 인접객체를 체인처럼 연결해서 관리, 객체 삭제와 삽입이 빈번한 곳에서 ArrayList보다 유리
- O(1)
- 검색 성능은 낮음(ArrayList는 배열 인덱스로 검색이 가능하기 때문에, 상대적으로 검색 성능이 낮다.)
set
- 저장 순서가 유지되지 않음
- 객체를 중복해서 저장할 수 없고, 하나의 null만 저장할 수 있음
- hashCode, equals()
HashSet
- 동등 객체를 중복 저장하지 않음
- 다른 객체라도 hashCode() 메소드의 리턴값이 같고, eqauls() 메소드가 true를 리턴하면 동일한 객체라고 판단하고 중복 저장하지 않음
- iterator() 메소드 : 반복자를 얻어 Set 컬렉션의 객체를 하나씩 가져옴
Map
- v-put(K key, V value) : 주어진 키와 값을 추가, 기존 키가 존재하면 삭제하고 값을 리턴
- 문자열을 빠르게 찾고자 할 때 주로 사용한다.
Hashtable
- 비권장
- 동기화된 메소드로 구성되어 있어 멀티 스레드가 동시에 Hashtable의 메소드들을 실행 불가
- 멀티 스레드 환경에서도 안전하게 객체를 추가, 삭제할 수 있다.
- js의 객체와 동일하다. 키와 값으로 이루어져 있기 때문에.
- 검색 : O(1)
Properties
- 키와 값을 String 타입으로 제한한 컬렉션
- 주로 확장자가 .proplerties인 프로퍼티 파일을 읽을 때 사용
- Map<String, String>
⭐정렬
- 배열 정렬
- Array.sort()
- Collection 정렬