2012-11-03 3 views
0

도움을 요청하고 싶습니다.내부 컬렉션에서 추가, 외부 컬렉션에서 찾기

  1. 나는 개체가 있습니다.
  2. 개체에는 "rooms"과 "people"의 컬렉션이 있습니다.
  3. 내가 선택 "건물"에서 여분의 목록에 대한 모든 "사람"을 추가해야합니다

코드는 명확 :

public void findPeopleInRoom(String selectedWord) { 

    List <String> listPeople= new ArrayList<>(); 

    //school.subordinateBuildings() return List of buildings 
    //b.people() return List of people 

     for(IBuilding b: school.subordinateBuildings()) { 
      if(b.getName().equals(selectedWord)) { 
       for(Person p1: b.people()) { 
        listPeople.add(p1.getName()); 
       } 
      } 
      else { 
       for(IBuilding b2: b.subordinateBuildings()) { 
        if(b2.getName().equals(selectedWord)) { 
         for(Person p2: b2.people()) { 
          listPeople.add(p2.getName()); 
         } 
        } 
       } 
      } 
      System.out.println(listPeople); 
      return; 
     } 
    } 

예 (구조) :

  • 학교 ("이름 ") (모든 객체에는 사람들 목록 및 건물 목록 있음) :
    • "A "
    • "B"
      • "B1"
      • "B2"-> 사람의 목록
    • "C"

하지만이 나던 일을 이잖아 나를 위해 아주 잘, 조금 무작위로. 대부분의 경우 인쇄되지 않으며 때로는 올바르게 인쇄됩니다.

모두에게 감사드립니다.

음 ...

+0

주어진 코드 조각에 의미 상으로 문제가 없지만 예제 구조를 얻을 수 없습니다. 인쇄에 문제가있는 경우 toString() 메서드를 재정의해야합니다. – Arham

+0

이상하게 보이는 것 - SOP 및 return 문은 for 루프 내에 있습니다 ... 루프 외부에서 사용하지 않는 특정 이유는 무엇입니까 ?? – Arham

답변

1

귀하의 return; 문에 대한 루프에 있습니다. 따라서 첫 번째 반복 후에 실행되고 메소드가 종료됩니다. 모든 건물에서 루프를 실행하려면 return; 문을 없애고 void 메쏘드에 필요하지 않습니다.

+0

오른쪽. 이제 알았어, 다음 어리석은 실수 야. 죄송합니다. 정말 고마워. –

관련 문제