Set 계열
Set 계열의 클래스에 저장된 데이터들은 순서가 없고 중복이 되지 않는다.
Set 인터페이스의 주요 구현 클래스에는 HashSet, LinkedHashSet, TreeSet이 있다.
메소드설명
함수 | 설명 |
boolean add(E e) | 요소를 추가 (선택적 기능) |
void clear() | 모든 요소를 제거 |
boolean contains(Object o) | 객체를 포함하고 있는지를 확인 |
boolean equals(Object o) | 객체가 같은지를 확인 |
boolean isEmpty() | 비어있는지를 확인 |
Iterator<E> iterator() | 반복자(iterator)를 반환 |
boolean remove(Object o) | 전달된 객체를 제거함. (선택적 기능) |
int size() | 요소의 총 개수를 반환 |
Object[] toArray() | 모든 요소를 Object 타입의 배열로 반환 |
HashSet
HashSet은 Set 컬렉션을 구현하는 대표적인 클래스이다.
Set<E> 객체명 = new HashSet<E>(); |
요소추가와 iterator()로 반복자를 생성하여 데이터가져와 출력하기
import java.util.ArrayList import java.util.HashSet; import java.util.Iterator;
public class Main {
public static void main(String[] args) { HashSet<Integer> A = new HashSet<Integer>(); A.add(1); A.add(2); A.add(2); A.add(3); A.add(3); A.add(4); A.add(5);
Iterator hi = A.iterator(); while(hi.hasNext()){ System.out.println(hi.next()); } } } |
출력결과] |
요소의 총 객체의 수와 객체 삭제, 모든 객체 삭제함수를 사용해보자.
import java.util.HashSet; import java.util.Iterator
public class Main {
public static void main(String[] args) { HashSet<Integer> A = new HashSet<Integer>(); A.add(1); A.add(2); A.add(3); A.add(4); System.out.println("총 객체의 수 : " + A.size());
A.remove(4); System.out.println("총 객체의 수 : " + A.size());
A.clear(); System.out.println("총 객체의 수 : " + A.size()); } } |
총 객체의 수 : 4 총 객체의 수 : 3 총 객체의 수 : 0 |
객체를 포함하고 있는지 없는지 확인하는 함수를 사용해보자.
import java.util.HashSet; import java.util.Iterator
public class Main {
public static void main(String[] args) { HashSet<Integer> A = new HashSet<Integer>(); A.add(1); A.add(2); A.add(3);
HashSet<Integer> B = new HashSet<Integer>(); B.add(4); B.add(5);
HashSet<Integer> C = new HashSet<Integer>(); C.add(1); C.add(2); System.out.println(A.contains(2)); System.out.println(A.contains(4)); System.out.println(A.containsAll(B)); System.out.println(A.containsAll(C)); } |
실행 결과] true false false true |
HashSet, LinkedHashSet, TreeSet으로 요소를 추가하고 출력해보자.
import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; import java.util.TreeSet;
public class ex01 {
public static void main(String[] args) { Set<String> set1 = new HashSet<>(); set1.add("1"); set1.add("3"); set1.add("5"); set1.add("2"); set1.add("4"); System.out.println(set1);
Set<String> set2 = new LinkedHashSet<>(); set2.add("1"); set2.add("3"); set2.add("5"); set2.add("2"); set2.add("4"); System.out.println(set2);
Set<String> set3 = new TreeSet<>(); set3.add("1"); set3.add("3"); set3.add("5"); set3.add("2"); set3.add("4"); System.out.println(set3); } } |
실행 결과] [1, 2, 3, 4, 5] [1, 3, 5, 2, 4] [1, 2, 3, 4, 5] |
학생 정보에서 학번을 중복체크하여 출력하기.
import java.util.HashSet; import java.util.Iterator;
class Student { String number; String name;
Student(String number, String name) { this.number = number; this.name = name; }
String getNumber() { return number; }
String getName () { return name; }
public int hashCode() { return number.hashCode(); }
public boolean equals(Object obj) { if(obj instanceof Student) { Student temp = (Student)obj; return number.equals(temp.number); } else { return false; } }
} public class Main {
public static void main(String[] args) { HashSet<Student> hs = new HashSet<Student>();
hs.add(new Student("20000301", "홍길동")); hs.add(new Student("20000301", "이순신")); hs.add(new Student("20000302", "일지매")); hs.add(new Student("20000303", "김삿갓"));
System.out.println("총객체의수: " + hs.size());
Iterator<Student> hi = hs.iterator();
while(hi.hasNext()){ Student student=hi.next();
System.out.println(student.getNumber() + " " + student.getName()); } }
} |
실행결과] 총객체의수: 3 20000302 일지매 20000301 홍길동 20000303 김삿갓 |
'프로그램언어 > 자바' 카테고리의 다른 글
Collection 계열 클래스3 (0) | 2020.11.14 |
---|---|
Collection 계열 클래스2 (0) | 2020.11.14 |
컬렉션 프레임워크 문제 (0) | 2020.11.08 |
스윙 컴포넌트 그리기3 (0) | 2020.11.05 |
스윙 컴포넌트 그리기2 (0) | 2020.11.05 |