JAVA

210820_Hashset+Iterator

요옫 2021. 8. 20. 14:35

//컬렉션: 자료구조(set,vector,arrayList)  <자료형>

//제네릭: 명시한 자료를 구현한 것, 컬렉션과 거의 동일하게 봄

//(인터페이스명 or 클래스명) <데이터형자료이름> 객체이름 = new 클래스명 <데이터형자료이름>

//컬렉션과 배열의 차이: 컬렉션은 복수자료형 저장 가능하며 크기가 가변적(배열은 정반대이며 안정성이 떨어짐)

//List: 순서가 중요할 때, 중복가능

//Set: 유일성이 중요할 때(중복 불가능), 순서는 안 지켜짐 (list 정반대)

//Map: key값으로 value값을 찾을 때

 

 

(예제1)

public class HashSetEx05 {

 

public static void main(String[] args) {

 

Set<String>set1=new HashSet<String>(); //string을 넣으면 다른 건 안 되고 string만 가능해짐

//HashSet<String>set1=new HashSet<String>(); 이렇게도 가능

//set안에 string 데이터만 담겠다..set은 인터페이스이므로

 

set1.add("사과");

set1.add("바나나");

set1.add("사과"); //중복은 포함하지 않음

set1.add("딸기");

set1.add("키위");

set1.add("포도");

 

System.out.println("데이터 개수: "+set1.size());

 

System.out.println("#출력1");  //단순출력

for(String s:set1)

System.out.println(s);

 

//꺼내서 출력하는 인터페이스 Iterator

//컬렉션 인터페이스에 정의된 메서드,List,Set도 포함

//Iterator를 얻은 다음에 반복문,while 돌려서 읽어온다

 

System.out.println("#출력2");

 

Iterator<String> iter=set1.iterator();

while(iter.hasNext()) // 데이터가 더이상 없으면 false

{

String s=iter.next(); //마지막 요소까지 다음값 돌려줌

System.out.println(s);  //다음으로 이동함과 동시에 데이터변환

}

 

System.out.println("#출력3");

Object[]ob=set1.toArray();

for(int i=0;i<ob.length;i++)

{

System.out.println(ob[i]);

}

 

//모든 데이터 삭제

set1.clear();

 

if(set1.isEmpty())

System.out.println("set타입 안에 데이터 없다");

else 

System.out.println("set타입 안에 데이터 있다");

}

}

 

//결과

데이터 개수: 5

#출력1

포도

사과

키위

바나나

딸기

#출력2

포도

사과

키위

바나나

딸기

#출력3

포도

사과

키위

바나나

딸기

set타입 안에 데이터 없다

 

 

~~~~~~~~~~~~~~~~~~~~

 

 

(예제2)

Set<Integer>set1=new HashSet<Integer>();

 

set1.add(3);

set1.add(11);

set1.add(7);

set1.add(5);

set1.add(29);

 

System.out.println("set1의 개수: "+set1.size());

 

System.out.println("#1. 출력");

for(Integer s:set1)

System.out.printf("%5d",s);  //%5d: 5칸 띄우기

 

System.out.println("\n#2. 출력");

Iterator<Integer>a=set1.iterator();

while(a.hasNext())

{

Integer s=a.next();

System.out.printf("%5d",s);

}

 

System.out.println("\n#3. 출력");

Object[]ob=set1.toArray();

for(int i=0;i<ob.length;i++)

System.out.printf("%5d",ob[i]);

 

//결과

set1의 개수: 5

#1. 출력

    3    5    7   11   29

#2. 출력

    3    5    7   11   29

#3. 출력

    3    5    7   11   29

'JAVA' 카테고리의 다른 글

210820_List+Vector  (0) 2021.08.20
210820_Hashset+random  (0) 2021.08.20
210820_filereader+filewriter+scanner  (0) 2021.08.20
210820_FileWriter+scanner  (0) 2021.08.20
210819_date format  (0) 2021.08.19