자바기초(Set)

bitna's study note·2022년 5월 12일
0

자바

목록 보기
77/119

5월 12일 내용정리

1.Set컬렉션은 주머니에서 담고꺼내는 것과 같다.
(1)순서가 없다.
(2)그래서 주머니에서 a를 꺼내와 할때 중복이면 뭘꺼내와야할지 몰라서 중복허용을 하지않는다.
심지어 null도 한개만 포함 가능하다. 왜?null도 중복되면 안됨
(3)집합개념, 인덱스 정보를 포함하고 있지않음
(4)중복 저장 할수 없음->인덱스매겨서 저장하지 않기 때문에 중복된 원소 중 특정위치의 값을 꺼낼방법이 없어서 중복을 허용하지 않음, null값도 한개만 가능하다.

2.List는 순서가 있기 때문에 중복이 되도 인덱스로 구분할수있어서 중복을 허용했음

3.Set 인터페이스 구현 클래스
HashSet ->Hash는 코드값을 부여하는 걸로 코드값으로 중복여부를 알수 있음
LinkedHashSet
TreeSet

4.Set 컬렉션의 주요 메서드
add(E element):매개변수로 입력된 원소를 리스트에 추가
remove(Object o):원소 중 매개변수 입력과 동일한 객체삭제
clear():전체 원소 삭제
contains(Object o):매개변수로 입력된 원소가 있는지 여부(true,false)로 나옴
size():원소의 개수
iterrator(): Set 객체내의 데이터를 연속하여 꺼내는 Iterrator 객체 리턴
toArray(T[]t): 입력매개변수로 전달한 타입의 배열로 변환

5.HashSet
Set 인터페이스를 구현한 구현 클래스
수집한원소를 집합의 형태로 관리
저장용량(Capacity)을 동적으로 관리
디폴트:16,16을 넘는 경우 자동으로 저장공간 확대
입력의 순서와 출력의 순서는 동일하지 않을 수 있다.

6.iterator()
Set 참조변수= 객체생성;
예)Set hSetExam= new HashSet();

Iterator 참조변수= 객체.iterator();
예)Iterator iterator= hSetExam.iterator();

hasNext()는 가져올 그다음 요소가 있으면true, 없으면 false
next()컬렉션에서 하나의 객체를 가져옴
remove()Set컬렉션에서 객체를 제거

package study_0512;

import java.util.*;

public class SetExam {

	public static void main(String[] args) {
		
		
		Set<String>hSet1= new HashSet<String>();
		//HashSet 요소 추가
		hSet1.add("홍길동");
		hSet1.add("이기자");
//		hSet1.add("홍길동"); 중복허용 안됨
		
		Set<String>hSet2= new HashSet<String>();
		hSet2.add("박기자");
		hSet2.add("홍길동");
		hSet2.add("한신림");
		hSet2.addAll(hSet1);//hSet1에 있는 홍길동은 hSet2 홍길동과 중복이라 한번만 출력해줌
		System.out.println(hSet2.toString());//
		
		//삭제,remove(Object o)
		hSet2.remove("한신림"); //인덱스가 없기 때문에 직접 내용을 써줌
		
		//모든 원소제거,clear()
		hSet1.clear();
		
		//데이터의 유/무 확인, isEmpty() 데이터가 없으면 true, 데이터가 있으면 false
		if(hSet1.isEmpty()) {
			System.out.println("원소 없음");
		}else {
			System.out.println("원소 있음");
		}
		
//		contains(Object o):매개변수로 입력된 원소가 있는지 여부(true,false)
		if(hSet2.contains("홍길동"))
			System.out.println("홍길동데이터가 있음");
		else
			System.out.println("홍길동데이터가 없음");
		
		System.out.println(hSet2.contains("홍길동"));
		System.out.println(hSet2.contains("김빛나"));
		
		//for문을 통해 내용 보기
		for(String str:hSet2) {
			System.out.println(str+" ");
		}
  
		Iterator<String> myiter = hSet1.iterator();
		
		while(myiter.hasNext()) {//hasNext는 가져올 그다음 요소가 있는지 확인
			System.out.println(myiter.next()); //자료가져오기
		}
		
		if(myiter.equals("박기자")) { //박기자와 같은게 있는지 확인
			myiter.remove();//있다면 제거해버려
		}
	}

}
profile
좋은개발자가 되기위한 삽질기록 노트

0개의 댓글

관련 채용 정보