Set 컬렉션
- Set 컬렉션은 저장 순서가 유지되지 않음
- 객체를 중복해서 저장할 수 없고, 하나의 null만 저장할 수 있음(수학의 집합 개념)
출처, 이것이 자바다
출처, 이것이 자바다
HashSet
출처, 이것이 자바다
- 동등 객체를 중복 저장하지 않음
- 다른 객체라도 hashCode() 메소드의 리턴값이 같고, equals() 메소드가 true를 리턴하면 동일한 객체라고 판단하고 중복 저장하지 않음
출처, 이것이 자바다
package ch15.sec03.exam01;
import java.util.HashSet;
import java.util.Set;
/*
* Set 인터페이스 : 순서가 없다(주머니). 중복저장 불가능(중복체크).
*/
public class HashSetExample {
public static void main(String[] args) {
//부모인터페이스 변수 = 구현객체;
Set<String> set = new HashSet<String>();
//객체 저장. 저장시 중복검사가 진행됨.
set.add("Java");
set.add("JDBC");
set.add("Servlet/JSP");
set.add("Java"); //중복. 저장 불가능
set.add("MyBatis");
//객체 수 확인
int size = set.size();
System.out.println("총 객체 수: " + size); //4. 중복저장이 안됨.
}
}
package ch15.sec03.exam02;
public class Member /* extends Object */ {
public String name;
public int age;
public Member(String name, int age) {
this.name = name;
this.age = age;
}
//동등한 객체확인
@Override
public int hashCode() {
System.out.println("hashCode() 호출");
return name.hashCode() + age; //"홍길동30"
}
@Override
public boolean equals(Object obj) {
System.out.println("equals() 호출");
if(obj instanceof Member) {
Member member = (Member) obj;
return member.name.equals(name) && (member.age==age);
} else {
return false;
}
}
}
package ch15.sec03.exam02;
import java.util.HashSet;
import java.util.Set;
public class HashSetExample {
public static void main(String[] args) {
Set<Member> set = new HashSet<Member>();
//Member객체 저장
set.add(new Member("홍길동", 30)); // hashCode() : true -> equals() : true -> 동등한 객체존재.
set.add(new Member("홍길동", 30));
//객체 수 출력
System.out.println("총 객체 수: " + set.size());
}
}
- iterator() 메소드: 반복자를 얻어 Set 컬렉션의 객체를 하나씩 가져옴
출처, 이것이 자바다
출처, 이것이 자바다
package ch15.sec03.exam03;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
/*
Set 인터페이스 : 반복자(Iterator)를 이용하여, 컬렉션 저장소의 모든 데이터를 읽어온다.
*/
public class HashSetExample {
public static void main(String[] args) {
Set<String> set = new HashSet<String>();
//객체추가
set.add("Java");
set.add("JDBC");
set.add("JSP");
set.add("Spring");
// int size = set.size();
//for문을 못쓸거 같을때 iterator가 있는지 확인해보기
Iterator<String> iterator = set.iterator();
while(iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
if(element.equalsIgnoreCase("JSP")) {
iterator.remove(); //set컬렉션에서 제거
}
}
System.out.println();
//객체 제거
set.remove("JDBC");
//향상된 for문
for(String element : set) {
System.out.println(element);
}
}
}
'라이브러리 활용 - 컬렉션 자료구조' 카테고리의 다른 글
LIFO와 FIFO 컬렉션 (0) | 2023.02.01 |
---|---|
검색 기능을 강화시킨 컬렉션 (0) | 2023.02.01 |
Map 컬렉션 (0) | 2023.02.01 |
List 컬렉션 (0) | 2023.02.01 |
컬렉션 프레임워크 (0) | 2023.01.31 |