반응형
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()로 값을 가져올 수 있습니다.






반응형