본문 바로가기
JAVA SE/Code

CODE [20.07.28/Day_14] Java SE / Interface Iterator 인터페이스 반복, Collection map 컬렉션 맵

by 파프리카_ 2020. 7. 28.
728x90
반응형

[ Collection 컬렉션 | 구현부 ]

 

Iterator  이터레이터 

: 반복 열거 표준 인터페이스 (Iterator interface)

 

 

iterator의 next() 함수와 hasNext() 함수를 이용한 출력 예제

/TestIterator2.java

import java.util.ArrayList;
import java.util.Iterator;

public class TestIterator2 {
	public static void main(String[] args) {
		//ArrayList에 data 담기
		ArrayList<String> list = new ArrayList<String>();
		list.add("초코케이크");
		list.add("딸기케이크");
		
		//Iterator 타입으로 출력
		Iterator<String> it = list.iterator();
		System.out.println(it.next()); //초코케이크
		System.out.println(it.next()); //딸기케이크
		//System.out.println(it.next()); //error : next(Unknown Source)
		
		while(it.hasNext()) { //hasNext() : boolean | 안에 값이 있는 동안 출력
			System.out.println(it.next());
		}
	}
}

 


 

Iterator를 이용하면 다양한 컬렉션 하위 객체들이 반환되어도,

동일한 방법으로 요소들을 열거할수 있는 예제

 

Main Class

/TestIterator3.java

import java.util.Collection;
import java.util.Iterator;
import java.util.Scanner;

public class TestIterator3 {
	public static void main(String[] args) {
		DataSerivce service = new DataSerivce();

		Scanner s = new Scanner(System.in);
		String type = s.nextLine();
		s.close();

		Collection<String> col = service.searchData(type);
		Iterator<String> it = col.iterator();

		while (it.hasNext()) {
			System.out.println(it.next());
		}
		/* 출력 1) A를 입력 받았을 때, 
		 * 하늘색
		 * 흰색
		 */
		
		/* 출력 2) B를 입력 받았을 때, 
		 * 초등학교
		 * 중학교
		 * 고등학교
		 */

	}
}

 

Service Class

/DataSerivce.java

import java.util.ArrayList;
import java.util.Collection;
import java.util.TreeSet;

public class DataSerivce {
	/**
	 * type A 유형은 TreeSet이 반환되고,
	 * type B 유형은 ArrayList가 반환된다.
	 * 다양한 자료구조체가 반환되지만 Collection 인터페이스의
	 * 하위구현체이므로 Collection 타입으로 반환하면 된다.
	 * @param type
	 * @return
	 */
	public Collection<String> searchData(String type) {
		Collection<String> collection = null;
		
		// TreeSet type
		if (type.equals("A")) {
			collection = new TreeSet<String>();
			collection.add("흰색");
			collection.add("하늘색");
		
		// ArrayList type
		} else if (type.equals("B")) {
			collection = new ArrayList<String>();
			collection.add("초등학교");
			collection.add("중학교");
			collection.add("고등학교");
		}
		
		return collection;
	}
}	

 


Map 맵

Main Class

/TestMap2.java

package step4;

import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Set;

public class TestMap2 {
	public static void main(String[] args) {
		LinkedHashMap<String, Product> map = new LinkedHashMap<String, Product>();

		Product p = new Product("1", "바나나우유", "빙그레", 1200);
		map.put(p.getId(), p);

		Product p2 = new Product("2", "기네스", "디아자오", 2500);
		map.put(p2.getId(), p2);

		System.out.println(map);
		/* 출력값:
		 * {1=Product [id=1, name=바나나우유, maker=빙그레, price=1200], 
		 * 2=Product [id=2, name=기네스, maker=디아자오, price=2500]}
		 */

		// 상품아이디가 2인 상품의 name을 출력
		System.out.println(map.get("2").getName()); // 기네스
		
		//현재 map의 key들만 반환해주는 method : keySet()
		Set<String> set = map.keySet();
		Iterator<String> it = set.iterator();
		while(it.hasNext()) {
			System.out.println(it.next());
			/* 출력값 : 
			 * 1
			 * 2
			 */
		}
		
		//현재 map의 value들만 반환해주는 method : values()
		Collection<Product> list = map.values();
		Iterator<Product> it2 = list.iterator();
		Iterator<Product> it3 = map.values().iterator(); //it2 == it3
		
		while(it2.hasNext()) {
			System.out.println(it2.next());
			/* 출력값 : 
			 * Product [id=1, name=바나나우유, maker=빙그레, price=1200]
			 * Product [id=2, name=기네스,maker=디아자오, price=2500]
			 */
		}
	}
}

 

VO Class

/Product.java

package step4;

public class Product {
	private String id;
	private String name;
	private String maker;
	private int price;
	
	public Product(String id, String name, String maker, int price) {
		super();
		this.id = id;
		this.name = name;
		this.maker = maker;
		this.price = price;
	}
	
	@Override
	public String toString() {
		return "Product [id=" + id + ", name=" + name + ", maker=" + maker + ", price=" + price + "]";
	}
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getMaker() {
		return maker;
	}
	public void setMaker(String maker) {
		this.maker = maker;
	}
	public int getPrice() {
		return price;
	}
	public void setPrice(int price) {
		this.price = price;
	}
	
	
}
728x90
반응형