Java Colection,AbstractCollection 인터페이스
1. Collection
객체의 모임이며, 직접 구현 안하며 Set이나 List중 하나를 구현한다.
크기 정보 추출
int size()
boolean isEmpty()
int size()
boolean isEmpty()
검색, 비교, 복사
boolean contains(Object o)
boolean containsAll(Collection c)
Iterator iterator()
Object[] toArray() : Collection 내의 객체의 배열을 반환
Object[] toArray(Object[] a)
boolean contains(Object o)
boolean containsAll(Collection c)
Iterator iterator()
Object[] toArray() : Collection 내의 객체의 배열을 반환
Object[] toArray(Object[] a)
객체 추가, 제거
boolean add(Object o)
boolean addAll(Collection c)
boolean remove(Object o)
boolean removeAll(Collection c) : c를 모두 제거
boolean retainAll(Collection c) : c를 제외한 객체 제거
clear()
boolean add(Object o)
boolean addAll(Collection c)
boolean remove(Object o)
boolean removeAll(Collection c) : c를 모두 제거
boolean retainAll(Collection c) : c를 제외한 객체 제거
clear()
특징
구성원 객체의 수가 변경되었으면 true를 반환
허용하지 않는 메쏘드는 UnsupportedOperationException 발생
add, addAll 메쏘드는 ClassCastException 발생 가능
null을 허용하지 않을 경우 NullPointerException 발생 가능
조건에 맞지 않을 경우 IllegalArgumentException 발생 가능
구성원 객체의 수가 변경되었으면 true를 반환
허용하지 않는 메쏘드는 UnsupportedOperationException 발생
add, addAll 메쏘드는 ClassCastException 발생 가능
null을 허용하지 않을 경우 NullPointerException 발생 가능
조건에 맞지 않을 경우 IllegalArgumentException 발생 가능
2. AbstractCollection
Collection 인터페이스 구현한 추상클래스
중복 허용
실제 저장 구조와 관계된 함수는 미구현
변경 불가능한 하위 Collection 구현 시 iterator(), size() 만 구현
변경 가능한 하위 Collection 구현 시
add() 구현하지 않으면 UnsupporedOperationException 발생
String toString()은 각 구성원 객체의 toString() 값을 출력한다.
중복 허용
실제 저장 구조와 관계된 함수는 미구현
변경 불가능한 하위 Collection 구현 시 iterator(), size() 만 구현
변경 가능한 하위 Collection 구현 시
add() 구현하지 않으면 UnsupporedOperationException 발생
String toString()은 각 구성원 객체의 toString() 값을 출력한다.
[예제]
package onj;
//AbstractCollection을 상속한 사용자 정의 컬렉션
import java.util.*;
import java.util.*;
public class MyCollection extends AbstractCollection {
private int size = 0;
private Object[] arr = new Object[10];
private int size = 0;
private Object[] arr = new Object[10];
public int size() {
return size;
}
return size;
}
public boolean add(Object o) {
arr[size++] = o;
return true;
}
arr[size++] = o;
return true;
}
public Iterator iterator() {
return new Iterator() {
private int current = -1;
return new Iterator() {
private int current = -1;
public boolean hasNext() {
return current + 1 < size;
}
return current + 1 < size;
}
public Object next() {
current++;
if (size <= current)
throw new NoSuchElementException();
return arr[current];
}
current++;
if (size <= current)
throw new NoSuchElementException();
return arr[current];
}
public void remove() {
if (current == -1 || size <= current) throw new NoSuchElementException();
for (int i = current + 1; i < size; i++)
arr[i - 1] = arr[i];
current--;
size--;
}
};
}
if (current == -1 || size <= current) throw new NoSuchElementException();
for (int i = current + 1; i < size; i++)
arr[i - 1] = arr[i];
current--;
size--;
}
};
}
public static void main(String[] args) {
MyCollection col = new MyCollection();
MyCollection col = new MyCollection();
col.add("OnJ1");
col.add("OnJ2");
col.add("OnJ2");
System.out.println("size(): " +
col.size());
System.out.println("contains(): " + col.contains("second"));
System.out.println("toString(): " + col);
System.out.println("contains(): " + col.contains("second"));
System.out.println("toString(): " + col);
System.out.print("iterator: ");
// 반복자
Iterator iter = col.iterator();
while (iter.hasNext()) {
System.out.print(iter.next() + ", ");
}
System.out.println();
Iterator iter = col.iterator();
while (iter.hasNext()) {
System.out.print(iter.next() + ", ");
}
System.out.println();
System.out.print("toArray(): ");
Object[] array = col.toArray();
for (int i = 0; i < array.length; i++)
System.out.print(array[i] + ", ");
System.out.println();
Object[] array = col.toArray();
for (int i = 0; i < array.length; i++)
System.out.print(array[i] + ", ");
System.out.println();
col.remove("first");
System.out.println("remove(): " + col);
System.out.println("remove(): " + col);
MyCollection col2 = new
MyCollection();
col2.add("OnJ3");
col2.add("OnJ4");
col2.add("OnJ3");
col2.add("OnJ4");
System.out.println("containsAll(): " +
col.containsAll(col2));
col.addAll(col2);
System.out.println("addAll(): " + col);
col.addAll(col2);
System.out.println("addAll(): " + col);
col.removeAll(col2);
System.out.println("removeAll(): " + col);
System.out.println("removeAll(): " + col);
col.clear();
System.out.println("col.size() : " + col.size());
System.out.println("clear(): " + col);
}
}
System.out.println("col.size() : " + col.size());
System.out.println("clear(): " + col);
}
}
[결과]
size(): 2
contains(): false
toString(): [OnJ1, OnJ2]
iterator: OnJ1, OnJ2,
toArray(): OnJ1, OnJ2,
remove(): [OnJ1, OnJ2]
containsAll(): false
addAll(): [OnJ1, OnJ2, OnJ3, OnJ4]
removeAll(): [OnJ1, OnJ2]
col.size() : 0
clear(): []
contains(): false
toString(): [OnJ1, OnJ2]
iterator: OnJ1, OnJ2,
toArray(): OnJ1, OnJ2,
remove(): [OnJ1, OnJ2]
containsAll(): false
addAll(): [OnJ1, OnJ2, OnJ3, OnJ4]
removeAll(): [OnJ1, OnJ2]
col.size() : 0
clear(): []
[개강확정강좌]오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(www.onjprogramming.co.kr)
[주간]
[11/4]Spring3.X, MyBatis, Hibernate실무과정
[11/6]SQL초보에서실전전문가까지
[평일야간]
[11/1]C#,ASP.NET마스터
[11/5]iPhone 하이브리드 앱 개발 실무과정
[11/7]JAVA&WEB프레임워크실무과정
[11/8]Spring3.X, MyBatis, Hibernate실무과정
[주말]
[11/2]C#,ASP.NET마스터
[11/2]Spring3.X, MyBatis, Hibernate실무과정
[11/2]JAVA&WEB프레임워크실무과정
[11/9]안드로이드개발자과정
[주간]
[11/4]Spring3.X, MyBatis, Hibernate실무과정
[11/6]SQL초보에서실전전문가까지
[평일야간]
[11/1]C#,ASP.NET마스터
[11/5]iPhone 하이브리드 앱 개발 실무과정
[11/7]JAVA&WEB프레임워크실무과정
[11/8]Spring3.X, MyBatis, Hibernate실무과정
[주말]
[11/2]C#,ASP.NET마스터
[11/2]Spring3.X, MyBatis, Hibernate실무과정
[11/2]JAVA&WEB프레임워크실무과정
[11/9]안드로이드개발자과정
댓글 없음:
댓글 쓰기