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
반응형