Java
Iterator , 동등성비교(equals @Override)
나의 오류는 누군가 겪었던 오류
2023. 9. 20. 22:22
Iterator : 컬렉션에 저장된 요소를 접근하는데 사용되는 인터페이스
iterator() 메소드는 List와 Set 계열에서만 사용할 수 있다
* Map의 경우 Set 또는 List화 시켜서 iterator()를 사용해야 함
Set entry = fruits.entrySet(); // fruits의 데이터를 set화 시켜서 entry에 저장
Iterator it = entry.iterator(); // 저장된 데이터에 접근하는데 사용되는 인터페이스 Iterator로 데이터를 가져오기
가격이 20000원 이상인 과일만 key와 value출력
while(it.hasNext()) {
Map.Entry f = (Map.Entry)it.next();
Fruit fruit = (Fruit)f.getValue();
// value에서 가격을 가져와야하니까 (Fruit)로 형변환을 해줌
if(fruit.getPrice()>=20000) {
System.out.println(f.getKey() + " " + f.getValue());
}
}
@Override // 동등성비교의 기준잡기
public boolean equals(Object o) { // o는 들어온값 입력받은값
if(o instanceof Fruit) { // o가 Fruit기반으로 만들어진것인가?
Fruit f =(Fruit)o; // 참이면 o를 (Fruit)로 형변환
if(this.name.equals(f.name) // 기존의값과 입력받은값이 동일한지 검사
&&this.origin.equals(f.origin)
&&this.count==f.count
&&this.price==f.price) {
return true; // 모두 같으면 true
}
}
return false;
}