JAVA-Set

정서윤·2021년 6월 29일
0

JAVA

목록 보기
3/10

List와 Set의 차이점

List

  • 입력한 데이터의 순서(인덱스)가 있다
  • 중복되는 데이터를 저장할 수 있다.

Set

  • 입력한 데이터의 순서가 없다.
  • 중복되는 데이터를 저장할 수 없다.
public static void main(String[] args) {
		Set hs1 = new HashSet<>();
		// Set에 데이터를 추가할 때는 add()메서드를 이용한다.
		hs1.add("DD");
		hs1.add("AA");
		hs1.add(2);
		hs1.add("CC");
		hs1.add("BB");
		hs1.add(1);
		hs1.add(3);
		
		System.out.println("Set 데이터:" +hs1);
		System.out.println();
		// Set은 데이터의 순서가 없고 중복을 허용하지않는다.
		// 그래서 이미있는 데이터를 add하면 false를 반환하고, 데이터는 추가되지 않는다.
		boolean isAdded = hs1.add("FF");
		System.out.println("중복되지않을때:" + isAdded);
		System.out.println("Set 데이터:" + hs1);
		System.out.println();
		
		// Set의 데이터를 수정하려면 수정하는 명령이 따로없기 때문에 해당 자료를 삭제한 후
		// 새로운 데이터를 추가해 주어야한다.
		// 삭제하는 메서드
		// 1) clear() => Set 데이터 전체 삭제
		// 2) remove(삭제할 자료)=> 해당자료삭제
		// 예) 'FF'를 'EE'로 수정하기
		
		hs1.remove("FF");//삭제
		System.out.println("삭제후 Set 데이터 :" + hs1);
		System.out.println();
		
		hs1.add("EE"); //추가
		System.out.println("추가 후 Set 데이터 : " + hs1);
		System.out.println();
		//hs1.clear(); //전체자료 삭제
		//System.out.println("클리어후 Set 데이터 :" +hs1);
		System.out.println("Set의 자료 개수:" + hs1.size());
		System.out.println();
		// Set은 데이터의 순서가 없기 때문에 List 처럼 인덱스로 데이터를 하나씩 불러올 수 없다.
		// 그래서 데이터를 하나씩 얻기 위해서는 Iterator로 변환해야한다.
		//Set의 데이터를 Iterator로 변환하기 => Set 의 iterator()메서드 호출하면됨.
		Iterator it = hs1.iterator();
		
		//데이터의 개수만큼 반복하기
		// hasNext() => 포인터 다음 위치에 데이터가 있으면 true, 없으면 false를 
		// 반환한다.
		while(it.hasNext()) {//다음 자료가 있는지 검사...
			//Next()=> 포인터를 다음 자료 위치로 이동하고, 이동한 위치의 자료를 반환한다.
			System.out.println(it.next());
		}
		//1~100 사이의 중복되지 않는 정수 5개 만들기
		Set<Integer> intRnd = new HashSet<>();
		while(intRnd.size() < 5) {// Set의 데이터가 5개가 될때까지 반복한다.
			int num = (int)(Math.random()*100+1); //1~100 난수
			intRnd.add(num);
		}
		System.out.println("만들어진 난수들:"+ intRnd);
		//Collection유형의 객체들은 서로 다른 자료 구조로 쉽게 변경해서 사용할 수 있다.
		// 다른 종류의 객체를 생성할 때 생성자에 변경할 데이터를 넣어주면 된다.
		List<Integer> intRndList = new ArrayList<Integer>(intRnd);
		System.out.println("List 자료 출력...");
		for(Integer num : intRndList) {
			System.out.println(num+"");
		}
	}
}
profile
차근차근

0개의 댓글

관련 채용 정보