반응형
package collection_fram;
public class Board {
String subject;
String content;
String writer;
public Board(String subject , String content, String writer) {
this.subject = subject;
this.content = content;
this.writer = writer;
}
}
package collection_fram;
import java.util.*;
public class Set_example {
public static void main(String[] args) {
// 저장 순서가 유지되지 않으며 객체를 중복해서 저장할 수 없다.
// 인덱스를 매개값을 갖는 메소드가 없다.
Set<String> set = new HashSet<String>();
set.add("Java");
set.add("JDBC"); // 값 추가
System.out.println(set.size()); // 객체 수
Iterator<String> iterator = set.iterator(); // <String> 을 받는 반복자 생성
while(iterator.hasNext()) { // hasNext() 가져올 객체값이 있으면 True (0번인 JAVA있으니 True)
String element = iterator.next(); // 컬렉션에서 하나의 객체를 가져옴 (0번을 가르킨 것을 가져옴)
System.out.println("\t" + element);
}
set.remove("JDBC");
iterator = set.iterator(); // 위에서 반복자가 끝까지 돌았기 때문에 다시 쓸라면 초기화 시켜야함
while(iterator.hasNext()) { // hasNext() 가져올 객체값이 있으면 True
String element = iterator.next(); // 컬렉션에서 하나의 객체를 가져옴 넣은 순서대로?
System.out.println("\t" + element);
}
Set<Board> set2 = new HashSet<Board>();
set2.add(new Board("제목1","내용1","글쓴이1"));
set2.add(new Board("제목2","내용2","글쓴이2"));
Scanner Scanf = new Scanner(System.in);
for (int i = 0 ; i < 3; i++) {
String title = Scanf.nextLine();
String inner = Scanf.nextLine();
String author =Scanf.nextLine();
Board temp = new Board(title,inner,author);
set2.add(temp);
}
Iterator<Board> iterator2 = set2.iterator(); // <String> 을 받는 반복자 생성
while(iterator2.hasNext()) { // hasNext() 가져올 객체값이 있으면 True
Board element = iterator2.next(); // 컬렉션에서 하나의 객체를 가져옴 넣은 순서대로?
System.out.println("\t" + element); // collection_fram.Board@7637f22
System.out.println(element.subject);
System.out.println(element.content);
System.out.println(element.writer);
}
iterator2 = set2.iterator(); // 위에서 반복자가 끝까지 돌았기 때문에 다시 쓸라면 초기화 시켜야함
while(iterator2.hasNext()) { // hasNext() 가져올 객체값이 있으면 True
Board element = iterator2.next(); // 컬렉션에서 하나의 객체를 가져옴 넣은 순서대로?
System.out.println("\t" + element);
System.out.println(element.subject);
System.out.println(element.content);
System.out.println(element.writer);
}
}
}
HashSet은 저장순서가 유지되지 않고 객체를 중복해서 저장할 수 없습니다.
Set<자료형> 객체 = new HashSet<자료형>();
Set<String> set = new HashSet<String>();
set.add(내용)으로 값을 추가할 수 있습니다.
set.size()으로 set의 갯수를 알 수 있습니다.
set.remove(내용)으로 값을 없앨 수 있습니다.
Iterator란 반복자로 배열같은 것이 있으면 순서대로 반복해서 0 ~ 마지막까지 가는 느낌입니다.
get(인덱스)로 접근할 수 없으니 이와같은 상황에 이용해야 합니다.
Iterator<자료형> 객체명 = 반복자에 이용할 컬렉션프레임.iterator();
Iterator<String> iteartor = set.iterator();
iteartor = set2.iterator(); 처럼 초기화 시켜서 다시 사용할 수 있다.
hasNext()의 경우 가져올 객체의 값이 있으면 True를 반환합니다.
인덱스란 개념이 없지만 첫번째 추가한java를 가르키는 것이 아닌 그 앞에 아무것도 없는 부분을 가르킵니다.
hasNext로 다음 값을 가르키며 가져올 객체의 값이 있는지 확인하는 것입니다.
get(인덱스)가 아닌 next()로 값을 가져올 수 있습니다.
반응형
'[Java] > [Java]' 카테고리의 다른 글
[Java] 자바 정렬(Sort) (Comparable vs Comparator) (0) | 2021.07.10 |
---|---|
[Java] 자바 컬렉션프레임워크 HashMap (0) | 2021.07.08 |
[Java] 자바 컬렉션프레임워크 LinkedList (0) | 2021.07.06 |
[Java] 자바 컬렉션프레임워크 Vector (0) | 2021.07.06 |
[Java] 자바 컬렉션프레임워크 ArrayList (0) | 2021.07.06 |