iterator() 메소드가 존재하는 class는 모두 for each 문을 사용 할 수 있다.
다른말로 바꿔하면 어떤 class 던지 Iterable<T> 인터페이스를 구현(iterator() 메서드 구현)하였으면 for each 문을 사용 할 수 있다.
for each 문의 기본 사용법은 아래와 같다.
ArrayList<string> ar = new ArrayList<>();
ar.add("a");
ar.add("b");
ar.add("c");
for(String str: ar){
System.out.println(str);
}
만약 어떤 class를 for each 문이 사용 가능한 class로 만들고 싶다면 아래와 같이 Iterable<T> 를 구현하면 된다.
public class StockBox implements Iterable<Stock>{
private ArrayList<Stock> stockList = new ArrayList<>();
@Override
public Iterator<Stock> iterator() {
return this.stockList.iterator();
}
public StockBox(){
this.stockList.add(new Stock("A", "DBC", 100));
this.stockList.add(new Stock("A", "DBEX", 300));
this.stockList.add(new Stock("B", "DBH", 70));
this.stockList.add(new Stock("C", "DBS", 20));
}
public static void main(String[] args){
StockBox sb = new StockBox();
for(Stock s : sb){
System.out.println(s.getName() + " (" + s.getGrade() + ") : " + s.getPrice());
}
}
}
반응형
'Java' 카테고리의 다른 글
| CompletableFuture 사용법 (0) | 2020.02.07 |
|---|---|
| apache HttpClient, javax.net.ssl.SSLHandshakeException 발생시 대처법 (0) | 2019.12.30 |
| 다이아몬드 연산자 (Diamond operator, JAVA 7 부터 추가) (0) | 2014.02.26 |
| Java 날짜 연산 (0) | 2014.02.25 |
| Matcher를 이용해 문자열 검색, 치환 하기 (0) | 2014.02.25 |