2012-04-29 14 views
0

에 이름을 찾기 위해 ArrayList를 사용하는 방법 :나는 현재 다음과 같은 질문을하고 있어요 레지스터

가 클래스 이름 문자열로 저장 속성 "성"과 "FIRSTNAME"가 가정합니다. 즉 어떤 주어진 성으로 목록에서 이름을 발견 한 경우, 또는 null를 돌려 아래

ArrayList<Name> regist = new ArrayList<Name>(); 

이 메소드를 구현, 채워집니다 "REGIST"가정하면 : "REGIST"선언 이름의 목록하자 일치하는 이름이 목록에 있습니다. (자바 코드 또는 자바와 의사 코드를 섞어 쓸 수도 있습니다.)

public Name find(String surname) 
{ 
    //... to do ... 
} 

내가 지금까지 함께 할 수 있었던 대답은 : 그 후

public Name find (String surname) 
{ 
    this.surname = surname; 
    return null; 
} 


public Name() 
{ 
    surname = " "; 
} 

, 사람이 어떻게 코드를 작성하는 나를 보여줄 수 있다면 나는 여기에서 막혔어요 그러면 당신의 도움은 진심으로 감사 할 것입니다, 미리 감사드립니다.

(내가 제대로 완료 할 수 있어요 만약 내가 제대로이 코드를 테스트 할 수있을 것입니다). 당신은 성 매개 변수와 일치하면 일치하는 항목을 찾을 수없는 루프 종료 후 null을 반환하는 경우 ... REGIST 및 테스트를 통해 루프 필요 해요

+0

지금처럼 필드 (또는 무엇이든)에 성 매개 변수를 할당 할 필요가 없습니다. 배열리스트를 반복 할 필요가 있습니다. 그리고 각'Name' 인스턴스에 대해 할당이 말하는 것을하십시오. –

답변

2

당신은 regList의 항목을 통해 루프가 주어진 성으로 Name 오브젝트를 돌려줍니다. 발견에 대한 귀하의 현재 코드가 올바르지 않습니다 - 찾기 방법은 이름 클래스에없는 및 (또는 안) 직접 Name 객체의 내부 변수를 변경하도록 허용.

여하튼

, 해결책은 다음과 같습니다 이미 당신이 원하는 surename을 가질 수있다

public Name find (String surname) 
{ 
    // loop all names in regist 
    for(Name n : regist) 
    { 
     // find the Name object with matching surname 
     if(n.getSurname().equals(surname)) 
     { 
      return n; 
     } 
    } 
    return null; 
} 
1

당신의 라인을 따라 뭔가를 의미합니까 찾다. 그것을 발견하려면 sudo는 코드에서 다음을 수행해야합니다 :

다음 REGIST의 마지막 장소로 자리 0에서 모든 이름을 확인 REGIST에 저장됩니다 얼마나 많은 이름을 찾을 수 있습니다. 동일하면 첫 번째 성을 반환합니다. first와 surname은 모두 regist에 추가되고, surename이 맞는지 테스트해야하며, surename이 맞으면 surename과 surename을 반환해야합니다.

0

당신이 ArrayList<Name> regist = new ArrayList<Name>(); 에 선언 된 ArrayList를 :

public Name find(String surname) 
{ 
    for(Name obj : regList) 
    { 
     // Check the object's surname with the given one 
     // Should check if obj is null 
     // Must use .equals to compare strings. 
     if(obj.surname.equals(surname)) 
      return obj; 
    } 

    // Not found 
    return null; 
} 
+0

Ehhh no, 이름의 구성 요소 (이름, 성)는 목록에 추가되지 않습니다. 'Name' 객체가 있습니다. 발생 횟수를 찾으려면 목록을 반복 할 필요가 없습니다. 그만큼 무의미하며 계산 낭비입니다. – debracey

+0

사실, 이름 개체를 먼저 가져온 다음 성이 올바른지 확인하고 se로 테스트해야합니다. 이 프로토콜은 이름 객체의 배열이 아닌 Name 객체를 반환해야하므로 검색을 계속하면 CPU주기가 낭비 될 것이라고 말합니다.두 개 이상의 성이 동일한 경우, 첫 번째 것은 발견되고 metod 선언이 public 인 한 반환됩니다. Name find (String surname) –

관련 문제