2014-12-01 2 views
0

페니 객체를 사용하여 생성자에서 HashSet을 채우려고 시도하고 있지만 어떻게해야하는지 잘 모르겠습니다. 나는 이것을 작성했지만 오류 메시지가 계속 나타납니다.HashSet에 객체를 추가 할 수없는 이유는 무엇입니까?

public Pocket(int numOfPennies){ 
    HashSet penniesSet = new HashSet<Penny>(); 

    while(penniesSet.size() <= numOfPennies){ 
     penniesSet.add(Penny); 


} 
+0

아래에 언급 된 문제 외에 원시 형식을 사용하여 세트를 선언하고 있습니다. 올바른 형식은'HashSet penniesSet = new HashSet ()'이다. 자바 7에서는'HashSet penniesSet = new HashSet <>()'과 같이'Penny'를 반복하지 않아도된다. –

+0

(사실, 나중에'TreeSet'으로 전환하기로 결정한 경우'Set penniesSet = new HashSet <>()'이 더 낫습니다.) –

답변

4

개체를 집합에 추가하는 것이 아니라 형식을 추가하려고하는 것이므로 작동하지 않거나 컴파일되지 않습니다. 대신

penniesSet.add(Penny); 

당신이 알고 있기 때문에

  • 이전에 몇 번 루프를 시작으로, for 루프가 아닌 while 루프를 사용하여 컬렉션에 추가 또한

    // assuming Penny has a default constructor 
    penniesSet.add(new Penny()); 
    

    시도 당신이 반복하고 싶어하는 것.

  • 페니를 잡기 위해 HashSet을 사용 하시겠습니까? HashSet은 컬렉션에 중복이 없길 원할 때 사용되지만 한 페니가 다른 페니와 같지 않을 때 사용됩니까? 즉, 항상이 사실이 아니어야합니다 : pennyA.equals(pennyB). 물론 이것은 페니 클래스에 대해 equals(...)hashCode()을 어떻게 정의하는지에 달려 있습니다.
  • ArrayList와 같은 다른 컬렉션이 더 논리적일까요?
+0

답변 해 주셔서 감사합니다. 해시 셋은 그 일을하기 위해 할당 된 것입니다. 미안, 내 질문에 조금 쓰레기가 생기면 나는 코딩과이 사이트에 익숙하지 않기 때문에 규칙과 그런 것들을 꽤 얻지는 못한다. –

+0

아마 각 페니가 일련 번호를 가지게 될까? –

관련 문제