-
Set 인터페이스-22.03.25고급자바 2022. 3. 25. 12:29728x90
import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; import javax.print.attribute.HashAttributeSet; public class T05_SetTest { 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(); isAdded=hs1.add("CC"); 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"); //EE자료 추가 System.out.println("Set 데이터: "+hs1); System.out.println(); //hs1.clear(); //전체 자료 삭제 //System.out.println("clear 후 Set 데이터:"+hs1); System.out.println("Set의 자료 개수: "+hs1.size()); System.out.println(); //Set은 데이터의 순서가 없기 때문에 List처럼 인덱스를 이용해 하나씩 불러올 수 없다. //그래서 데이터를 하나씩 얻기 위해서는 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<Integer>(); while(intRnd.size()<5) { int num=(int) (Math.random()*100+1); intRnd.add(num); } System.out.println("만들어진 난수들: "+intRnd); //Collection유형의 객체들은 서로다른 자료구조로 쉽게 변경해서 사용할 수 있다. //다른 종류의 객체를 생성할 때 생성자에 변경할 데이터를 넣어주면 된다. List<Integer> intRndList= new ArrayList<Integer>(intRnd); System.out.println("List의 자료출력..."); for(int i=0; i<intRndList.size();i++) { System.out.println(intRndList.get(i)); } } }
<Set은 Iterator말고 향상된 for문으로도 출력이 가능하다.>
for(Object list1:hs1) { System.out.print(list1+" "); }
import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.SortedSet; import java.util.TreeSet; public class T06_SetTest { /** * TreeSet 예제 * @param args */ public static void main(String[] args) { //TreeSet은 자동 정렬 기능이 들어가 있다. 검색 속도 빠르다~ TreeSet<String> ts =new TreeSet<String>(); List<String> abcList=new ArrayList<String>(); //영어 대문자를 문자열로 변환하여 List에 저장 for(char ch='A'; ch<='Z'; ch++) { String temp=String.valueOf(ch); abcList.add(temp); } Collections.shuffle(abcList); System.out.println("abcList자료: "+abcList); for(String str:abcList) { ts.add(str); } System.out.println("TreeSet 자료:"+ts); /* * TreeSet에 저장된 자료 중 특정한 자료보다 작은 자료를 찾아서 SortedSet으로 반환하는 메서드가 있다. * =>headSet(기준값) => 기본적으로 '기준값'은 포함시키지 않는다. 즉 머리를 기준으로 작은것 * =>headSet(기준값,논리값) => 논리값이 true이면, '기준값' 포함함. */ SortedSet<String> ss1=ts.headSet("K"); System.out.println("K 이전자료: "+ss1); //기준값 미포함 System.out.println("K 이전자료(기준값 포함): "+ts.headSet("K",true)); /* '기준값' 보다 큰 자료를 찾아 SortedSet으로 반환하는 메서드 * tailSet(기준값) => 기본적으로 '기준값'을 포함시킨다. * tailSet(기준값, 논리값) => 논리값이 false이면 '기준값' 미포함.*/ SortedSet<String> ss2= ts.tailSet("K"); System.out.println("K 이후자료: "+ss2); //기준값 포함 System.out.println("K 이후자료(기준값 미포함): "+ts.tailSet("K",false)); /* subSet(기준값1,기준값2) => 기준값1 ~ 기준값2 사이의 값을 가져옴. * ('기준값1' 포함, '기준값2' 미포함) * subSet(기준값1, 논리값1, 기준값2, 논리값2) * => 각 기준값을 포함할지 여부를 설정한다. * (논리값이 true이면 포함, false이면 미포함) */ System.out.println("K (포함)부터 N(미포함) 까지: " +ts.subSet("K", "N")); System.out.println("K (포함)부터 N(포함) 까지: " +ts.subSet("K",true, "N",true)); System.out.println("K (미포함)부터 N(미포함) 까지: " +ts.subSet("K",false, "N",false)); System.out.println("K (미포함)부터 N(포함) 까지: " +ts.subSet("K", false,"N",true)); } }
728x90'고급자바' 카테고리의 다른 글
Map,properties-22.03.28 (0) 2022.03.28 hashCode(),equals()-22.03.25 (0) 2022.03.25 Collection 객체 정렬하기-22.03.25 (0) 2022.03.25 컬렉션 프레임워크-22.03.24 (0) 2022.03.24 고급자바-2022.03.24 (0) 2022.03.24