Collection< E > 인터페이스 메서드 11가지
- List와 Set 구현체에서 사용할 수 있는 부모 클래스의 메서드
add(E e) : boolean
Collection에 객체 추가
Collection이 변경되면 true 반환
SET 사용시
객체가 Set에 존재하면 true 반환, 존재하면 false 반환
addAll(Collection c) : boolean
Collection에 매개변수 Collection 요소들을 추가
Collection이 변경되면 true 반환
contains(Object o) : boolean
Collection에 매개변수 객체가 존재하면 true
존재하지 않으면 false 반환
containsAll(Collection c) : boolean
Collection에 매개변수 Collection c 원소들이 모두 존재하면 true
하나라도 존재하지 않으면 false 반환
inEmpty() : boolean
Collection이 비어있으면 true 반환, 그렇지 않으면 false 반환
size() : int
Collection의 길이를 반환
remove(Object o) : boolean
Collection에서 매개변수 객체를 제거한다.
제거할 객체가 존재하면, true 반환, 그렇지 않으면 false 반환
동일한 객체가 여러 개인 경우 맨 앞의 객체를 제거
removeAll(Collection c) : boolean
Collection에서 매개변수 Collection c 요소들을 모두 제거
Collection이 변경되면 true 반환
동일한 객체가 여러 개여도 하나만 추가해주면 여러 개의 객체를 모두 삭제한다.
clear() : void
Collection의 모든 요소를 제거
toArray() : Object[]
Collection을 Object 배열로 반환
메서드의 결과로 배열에 저장될 때, 배열의 크기가 작다면 반환되는 객수만큼 배열의 크기가 증가한다.
toArray(T[] a) : T[]
매개변수 타입 배열로 만들기 위해서 사용
Collection을 T타입 배열로 반환
** contains, containsAll, remove, removeAll을 사용자 정의 클래스 객체에 사용하려면
equals()를 오버라이딩하여 같음 기준을 정해줘야 한다.
List< E > 인터페이스 메서드 - 5가지
List 구현체에서 사용할 수 있는 메서드들
add(int index,E ele) : void
특정 인덱스 위치에 객체를 추가
** 해당 인덱스에 객체가 존재하면 해당 객체는 뒤로 밀린다.
addAll(int index, Collection c) : boolean
List의 특정 인덱스에 매개변수 Collection 요소들을 추가
List가 변경되었다면 true 반환, 그렇지 않으면 false 반환
set(int index, E ele) : E
List의 특정 인덱스의 객체를 변경
변경되지 건 객체를 반환
get(int index, E ele) : E
List의 특정 인덱스 객체를 반환
remove(int index) ; E
List의 특정 인덱스 객체를 제거 후 제거된 객체 반환
List 모든 요소 접근 - for , for-each , iterator():Iterator< E >
1)for문
for(int i = 0 ; i < list.size() ; i++)
System.out.print(list1.get(i));
2)for-each문
for(Integer ele : list)
System.out.print(ele);
3)iterator() : Iterator< E >
Collection 프레임워크에서 표준화된 Iterator 사용
→ Iterator를 이용해서 하나씩 꺼내서 사용하는 것이 표준
hasNext() - 다음 요소가 있는지 확인 있으면 true , 없으면 false 반환
next() - 화살표 다음 요소로 이동
Iterator<Integer> iter = list.iterator();
while(iterator.hasNext())
System.out.print(iter.next());
List에서 모든 동일 원소 제거 시 3가지 방법
1) remove(Object o) : boolean 사용
while(list.contains(obj)){
list.remove(obj);
}
2) removeAll(Collection< ? > c) : boolean 사용
→ 제거할 원소들을 Collection에 추가한 뒤 removeAll() 메서드를 사용하여 제거
3) Iterator의 remove() 사용
Iterator<Student> iter = list.iterator();
while(iter.hasNext()){
if(iter.next().equals(new Student(”lee”,1));
iter.remove();
}
주의사항
List는 동적으로 크기를 조절하기 때문에 for문, for-each문으로 제거해서는 안 된다.
→ for문,for-each문 동작 도중 크기가 동적으로 변경되어 문제가 발생할 수 있음
Set
순서 없음 , 중복 저장 불가
set() 메서드가 없으므로 객체를 제거 후 새로 추가해야 함
Hash , Tree
Hash 구조를 사용할 때 사용자 정의 클래스 객체를 사용하려면
1) 해쉬함수로 해쉬코드 비교
2) equals()로 비교
** 즉 hashCode(), equals() 메서드를 재정의해야 한다.
→ contains(), containsAll(), remove(), removeAll() 메서드를 사용하려면 hashCode, equals 재정의 필요
Set에서 모든 요소 접근하려면 forEach, iterator으로 접근 가능
for문은 index가 없으므로 사용할 수 없다.
Set은 중복이 없으므로 모든 동일 원소를 제거할 필요가 없다.
→ 불필요한 것 그냥 하나만 삭제하면 된다.
Tree 구조를 사용할 때 사용자 정의 클래스 객체를 사용하려면
Comparable 인터페이스를 반드시 구현해야 한다.
→ compareTo() 메서드를 재정의 해줘야 함 (크기 비교 메서드) - 내가 기준을 설정
→ equals(), hashCode() 없어도 됨
implements Comparable<Student>
@Override
public int compareTo(Student obj){
return thid.id - obj.id;
}
instanceof 키워드와 < ? extends E >
[instanceof 키워드]
객체 판별할 때 사용
주로 특정 클래스 타입에 작업을 수행할 때 사용
// Student 객체 이거나 이를 상속받은 초등학생, 중학생, 고등학생 객체는 true 반환
if( obj instanceof Student )
Student stu = (Student)obj;
System.out.println(stu.getName());
}
< ? extends E > 키워드
E를 포함해서 E를 상속하는 모든 서브 클래스들이 올 수 있다.
'JAVA' 카테고리의 다른 글
Object 클래스의 메서드 (0) | 2024.12.04 |
---|---|
객체지향 프로그래밍 1 (0) | 2024.11.27 |
JAVA Collection Framework 3 (0) | 2024.11.26 |
JAVA Collection Framework 1 (0) | 2024.11.24 |