티스토리 뷰

Java

[Java] Collection - Iterator

Jane Kwon 2021. 2. 10. 15:39
반응형

 

Iterator 는 자바의 컬렉션 프레임워크에서 컬렉션에 저장되어 있는 요소들을 읽어오는 방법의 표준으로
컬렉션 프레임워크는 다음과 같이 데이터를 저장하는 구조에 따라 3가지 인터페이스로 구성된다.

 

 

Iterator 는 Set, List, Map 과 같은 데이터 집합체로부터 정보를 얻어낸다고 볼 수 있고,
집합체를 다룰 때는 개별적인 클래스에 대해 데이터를 읽는 방법을 알아야 하기 때문에
각 컬렉션에 접근이 힘들어진다.

 

하지만 Iterator 를 쓰게 되면 어떤 컬렉션이라도 동일한 방식으로 접근이 가능하여
그 안에 있는 항목들에 접근할 수 있는 방법을 제공한다.

 

 

 

Iterator 메소드는 다음과 같다.

  • hasNext() : 읽어올 요소가 남아있는지 확인하는 메소드로 요소가 있다면 true, 없다면 false
  • next() : 다음 데이터를 반환
  • remove() : next() 로 읽어온 요소를 삭제

 

 

 

사용법

int index = 0;

for (GreengrassDeviceModel device : requestModel.getDevices()) {
   if (StringUtils.isEmpty(device.getCertificateArn())) {
       ThingCertificateDetailDataModel thingCertificateDetailDataModel = this.findOneThingCertificateById(device.getCertificateId());

       requestModel.getDevices().get(index).setCertificateArn(thingCertificateDetailDataModel.getCertificateArn());
   }

   index++;
}

기존 향상된 for문에서 Iterator for문으로 수정하면 아래와 같이 된다.

List<GreengrassDeviceModel> list = requestModel.getDevices();

for (Iterator<GreengrassDeviceModel> iterator = list.iterator(); iterator.hasNext();) {
   GreengrassDeviceModel element = iterator.next();

   if (StringUtils.isEmpty(element.getCertificateArn())) {
       ThingCertificateDetailDataModel thingCertificateDetailDataModel = this.findOneThingCertificateById(element.getCertificateId());

       element.setCertificateArn(thingCertificateDetailDataModel.getCertificateArn());
   }
}

requestModel.setDevices(list);

기존 방법은 중간에 디바이스가 삭제되거나 변경사항이 생겼을 때 영향을 받지 않지만
Iterator 를 사용하면 문제없이 for문을 돌릴 수 있다는 것이 장점이다.

(참고 : tcpschool.com/java/java_collectionFramework_iterator, shxrecord.tistory.com/74)

 

 

 

 

 

반응형

'Java' 카테고리의 다른 글

[Java] @Builder  (0) 2021.02.10
[Java] Source Builder  (0) 2021.02.10
[Java] 정규표현식 Pattern, Matcher  (0) 2021.02.10
[Java] Object의 Field 값 얻는 방법  (0) 2021.02.10
[Java] URI 한글 인코딩 이슈  (0) 2021.02.10
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함