E : Collection에 담겨있는 Element를 의미한다.
E -> 하나의 객체를 관리하기 위한 인터페이스이다. 이때, 담기는 Element는 Collection Interface를 무엇으로 구현하는가에 따라 달라진다.
Colletion이구현해야하는 메소드는 다음과 같다. 주요한 메소드만 설명하고, 나머지는 출처에 가서 확인하자.
... 이외에도 구현해야하는 많은 메소드가 있다.
Collection의 SubInterface는 다음과 같다.
우리는 List와 Set에 대해서 후에 알아볼 것이다.
출처 : https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html
// Object형의 ArrayList
ArrayList arrayList1 = new ArrayList();
// Generic 사용한 ArrayList
ArrayList<Integer> arrayList2 = new ArrayList<Integer>();
// 용량 지정한 Arraylist
ArrayList<Integer> arrayList3 = new ArrayList<Integer>(100);
ArrayList<Interger> arrayList= new ArrayList();
arrayList.add(1); // 원하는 값 추가
arrayList.add(2);
arrayList.add(3);
arrayList.add(1,3); // index 지정
ArrayList<Interger> arrayList= new ArrayList();
arrayList.remove(3); // index 지정해서 삭제
arrayList.clear(); // 전체 값 제거
ArrayList<Interger> arrayList= new ArrayList();
System.out.println(arrayList.size()) // 사이즈 출력
ArrayList<Interger> arrayList= new ArrayList();
arrayList.add(1);
arrayList.add(2);
arrayList.add(3);
// Iterator로 출력
Iterator iterator = arrayList.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
// for문으로 출력
for(Interger i : arrayList){
System.out.println(i);
}
ArrayList<Interger> arrayList= new ArrayList();
arrayList.add(1);
arrayList.add(2);
arrayList.add(3);
// 값으로 탐색
System.out.println(arrayList.contains(3));
// 인덱스로 탐색
System.out.println(arrayList.indexOf(1));
// Object형의 LinkedList
LinkedList linkedList1 = new LinkedList();
// Generic 사용한 LinkedList
LinkedList<Integer> linkedList2 = new LinkedList<Integer>();
LinkedList<Interger> linkedList= new LinkedList();
linkedList.add(2); // 마지막에 데이터 추가
linkedList.addFirst(1); // 맨 앞에 데이터 추가
linkedList.addLast(3); // 맨 뒤에 데이터 추가
linkedList.add(1,3); // index 지정해서 데이터 추가
LinkedList<Interger> linkedList= new LinkedList();
linkedList.remove(); // index 0의 값 제거
linkedList.remove(2); // index 2를 지정하여 값 제거
linkedList.removeFirst(); // 맨 앞의 데이터 제거
linkedList.removeLast(): // 맨 뒤의 데이터 제거
linkedList.clear(); // 전체 값 제거
LinkedList<Interger> linkedList= new LinkedList();
System.out.println(linkedList.size()) // 사이즈 출력
LinkedList<Interger> linkedList= new LinkedList();
linkedList.add(1);
linkedList.add(2);
linkedList.add(3);
// Iterator로 출력
Iterator iterator = linkedList.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
// for문으로 출력
for(Interger i : linkedList){
System.out.println(i);
}
LinkedList<Interger> linkedList= new LinkedList();
linkedList.add(1);
linkedList.add(2);
linkedList.add(3);
// 값으로 탐색
System.out.println(linkedList.contains(3));
// 인덱스로 탐색
System.out.println(linkedList.indexOf(1));
객체를 중복해서 저장할 수 없다. 중복을 어떻게 제거할까?
이러한 메커니즘으로
저장 순서가 유지되지 않는다. -> TreeSet과 차이점
사용 방법은 아래와 같다.
// Generic으로 HashSet 선언
HashSet<Integer> hashSet1 = new HashSet<Integer>();
// 용량 지정해서 HashSet 선언
HashSet<Integer> hashSet2 = new HashSet<Integer>(100);
// 용량 지정하고 ,load factor도 지정해준다.
HashSet<Integer> hashSet2 = new HashSet<Integer>(100, 0.8f);
HashSet<Integer> hashSet = new HashSet<Integer>();
hashSet.add(1);
hashSet.add(2);
hashSet.add(3);
HashSet<Integer> hashSet = new HashSet<Integer>();
hashSet.add(1);hashSet.add(2);hashSet.add(3);
hashSet.remove(1); // 1을 제거한다.
hashSet.clear(); // 모든 값을 제거한다.
HashSet<Integer> hashSet = new HashSet<Integer>();
System.out.println(hashSet.size());
HashSet<Integer> hashSet = new HashSet<Integer>();
// Iterator로 값을 출력한다.
Iterator iterator = hashSet.iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
HashSet<Integer> hashSet = new HashSet<Integer>();
hashSet.add(1);hashSet.add(2);hashSet.add(3);
System.out.println(hashSet.contains(3));
객체를 중복해서 저장할 수 없다.
정렬을 지원한다. -> Red-Black Tree 자료구조로 데이터를 저장하기에 가능하다.
Red - Black Tree의 원리
데이터를 한쪽으로 치우치지 않도록 균형을 맞추어준다.
이로 인해서, 데이터를 삭제하거나 추가해도, 트리가 한쪽으로 치우치지 않도록 균형을 맞출 수 있다.
이외에도 많은 규칙이 있다. -> https://ko.wikipedia.org/wiki/%EB%A0%88%EB%93%9C-%EB%B8%94%EB%9E%99_%ED%8A%B8%EB%A6%AC
사용 방법은 아래와 같다.
// TreeSet 생성
TreeSet<Integer> treeSet = new TreeSet<Interger>();
TreeSet<Integer> treeSet = new TreeSet<Integer>();
treeSet.add(1);
treeSet.add(2);
treeSet.add(3);
TreeSet<Integer> treeSet = new TreeSet<Integer>();
treeSet.add(1);treeSet.add(2);treeSet.add(3);
treeSet.remove(1); // 1을 제거한다.
treeSet.clear(); // 모든 값을 제거한다.
TreeSet<Integer> treeSet = new TreeSet<Integer>();
System.out.println(treeSet.size());
TreeSet<Integer> treeSet = new TreeSet<Integer>();
// Iterator로 값을 출력한다.
Iterator iterator = treeSet.iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
// HashSet과 달리, 정렬을 하기 때문에 아래와 같은 메소드를 지원한다.
System.out.println(treeSet.first()); // 최소값 출력
System.out.println(treeSet.last()); // 최대값 출력