2014-12-02 2 views
0

페니 개체가 채워진 Hashset이 있는데이 페니 개체 중 하나를 HashSet에서 제거하고 반환하는 메서드를 만들고 싶습니다. 다음은이 작업을 위해 만든 메서드이지만 오류 메시지가 나타나면 작동하지 않습니다. 누군가가 나에게 당신은 remove 방법에 유형 Penny을 전달하는이Hashset에서 객체를 제거하고 반환하는 방법은 무엇입니까?

public Penny removePenny(){ 

    if(penniesSet.size()<= 0){ 
     return null; 
    } 
    else 
     penniesSet.remove(Penny) 

    return penniesSet.get(Penny) 
} 
+0

어떤 유형의 오류 메시지가 있습니까? – therealrootuser

+0

실제 코드에 누락 된';'을 넣었으나 위의 코드는 넣지 않은 것으로 가정합니다. – Baby

+0

'penniesSet.remove (Penny)'<--- 객체와 클래스의 차이점을 알고 있습니까? 또한 집합을 채우는 코드는 어디에 있습니까? 그리고 세트에 12 개의 객체가 있다고 가정 할 때, 위의 코드가 제거해야 할 12 개의 객체를 어떻게 선택한다고 생각하십니까? – The111

답변

1

을하는 올바른 방법을 설명 할 수있다. 당신은 물건을 지나쳐야합니다.

get 방법으로 당신은 아마이 읽어야 또한 Why doesn't java.util.HashSet have a get(Object o) method?

, Penny는 적절한 hashCode() 메소드가없는 경우입니다 문제는 Hashset에서 개체를 찾는 발생할 수있는 일반적인 문제를 .

임의의 Penny을 제거하는 것이 처음부터 시도했던 것과 다를 수 있습니다. 당신이 (스택에서 터지는이라고도 함) 추가 된 마지막 하나를 제거 할 경우에 당신은 Penny이 클래스 이름이 아닌 값으로, 작동하지 않습니다 different collection

1

penniesSet.remove(Penny)penniesSet.get(Penny)을 사용하여 조사 할 수 있습니다. 제거하는 세트에서 모든 요소를 ​​얻고 싶은 경우에, set.iterator().next()를 사용

public Penny removePenny() { 

    if (penniesSet.size() == 0) { 
     return null; 
    } 
    Penny penny = penniesSet.iterator().next(); 
    penniesSet.remove(penny); 
    return penny; 
} 
+0

이 대답은 틀린데,'remove()'는'boolean'을 반환합니다. 올바른 구현은 내 대답을 참조하십시오. –

+0

@ ÓscarLópez 죄송합니다,지도에서'제거'를 생각하고있었습니다. – August

+0

크레딧을주지 않고 내 자신의 답변을 복사하여 붙여 넣기 만하셨습니까?! 놀랄 만한. –

0

당신은 돌아가 HashSet의에서 페니 개체를 제거하는 반복자의 사용을해야합니다. 다음 코드를 입력하십시오 :

public Penny removePenny(){ 
    Penny p = null; 
    Iterator it = penniesSet.iterator(); 
    if(it.hasNext()) { 
     p = (Penny) it.next(); 
     it.remove(); 
    } 
    return p; 
}