Bag
- 원소들을 단순히 모아 놓은 것
- 원소들 사이에 아무런 순서가 없고
- 중복된 원소들도 있을 수 있다.
- Bag 객체의 추상화 : 사용법
- Bag 객체 생성과 소멸
- Bag 상태 알아보기
public int size(){}
public boolean isEmpty(){}
public boolean isFull(){}
public boolean doesContain(E anElement){}
public int frequencyOf(E anElement){}
- Bag 내용 알아보기
- Bag 내용 바꾸기
public boolean add(E anElement){}
public E removeAny(){}
public boolean remove (E anElement)
public void clear(){}
Set
- 원소들의 집합
- 원소들 사이에 아무 순서가 없다.
- 중복된 원소는 존재 하지 않는다.
List
- 원소들이 순서 있게 나열 되어 있다.
- 원소들의 순서가 중요한 경우
- 원소가 중복 될 수도 있다.
Generic Class
- 하나의 설계도로 여러가지 타입의 설계 가능
- 사용하는 시점에 결정하면 편리할 것이다.
- 하나의 설계도만 작성하여 사용하기 떄문에 코드의 생산성이 높아진다.
- 설계도가 유사하지만 똑같지는 않다면 inheritance를 고려한다.
- Java는 자료형을 특정하지 않은 채로 형식적인 식별자를 사용할 수 있다.
- 이러한 형식적인 식별자로 정의되는 자료형을 generic type이라고 한다.
- 이 generic identifier은 나중에 실제로 사용하는 시점에 존재하는 자료형 이름으로 대체 된다.
- ex) Class ArrayList <T>, Class LinkedNode <E>
- 사용하는 관점에서 동일한 class 일지라도 사용시점에 generic type이 다르게 주어진 class는 서로 다른 class라고 할 수 있다.
- Class “ArrayList <Student>” Class “ArrayList<Coin>”은 서로 다른 class 이다.
Generic Class를 배열 원소의 자료형으로 사용?
public class ArrayList<T>{
private T[] _elements;
@SuppressWaring("unchecked") // 에러 확인
public ArrayList(){
this._elements = (T[]) new Object [100];
}
}
// 객체를 생성하는 new를 사용할 떄에는 generic 이 아니라 구체적인 type으로 언급 되어야한다.
// new에 T를 사용하게 되면 컴파일러는 오류를 생성하게 된다.
// 자료형 불일치를 해결하기 위해서 생성된 배열의 자료형을 강제로 T[]로 변환 시킨다.
Java 에서의 배열
- 배열은 객체
- int[] a;
- a = new int[];
- new를 실행한 후에야 배열 객체 변수 a는 배열 객체를 소유하게 된다.
- 배열의 크기 : 배열.length;
- 특정 위치의 값 얻기 : 배열[index];
- 특정 위치의 값 설정하기 : 배열[index] = a;