2018년 11월 18일 일요일

ArrayList도 그렇고 HashSet 또 그렇고 iterator로 반환가능한 함수가 있기에 궁금했는데
여윽시 ...Collection 은 상속받고 있었다 ..
public interface Collection<E>
extends Iterable<E>

HashSet

HashSet<String> hSet = new HashSet<String>();
hSet.add("일");
hSet.add("이");
hSet.add("이");
hSet.add("삼");
Iterator<String> itr = hSet.iterator();
while(itr.hasNext())
{
System.out.println(itr.next());
}
결과




HashSet ...중복을 허용 X

ArrayList와 달리 HashSet은 집합의 성격을 가지고 있어서 -> 중복을 허용하지 않는다

자바 Iterator

ArrayList<String> al = new ArrayList<String>();
al.add("one");
al.add("two");
al.add("three");
Iterator<String> it = al.iterator();
while (it.hasNext()) {
String str=it.next();
if (str.equals("two")) {
it.remove();
}else
System.out.println(".다음 문장은 : " + str);

}
결과
.다음 문장은 : one
.다음 문장은 : three

처음에 if (str.equals("two"))를 if (it.next().equals("two"))
이런 식으로 접근하다 혼났다 조금 더 생각해 보면 간단한 것을 ..
it.remove(); 마지막으로 return한 값을 ArrayList에서 제거해준다
hasNext는 다음 값이 있느냐에 따라 true if the iteration has more elements
true를 반환
it.next는 단순 가리키는 걸로 생각했는데 가리키면서 동시에 1칸 이동 ..
그렇다 내 설명은 좆같다 API를 참고하기 바람 

https://docs.oracle.com/javase/7/docs/api/

© 특히하고 특별한
Maira Gall