2012-07-19 2 views
-1

나는 그때반환 문자열은

List<Player> listPlayers = new ArrayList<Player>(); 

내가 필요 플레이어의 목록을하는 클래스 선수에게

public Player (String name, int num) { 
    name = name; 
    num= num; 
} 

// getter 및 setter

이 번호가 주어진 플레이어 이름을 반환하는 메소드를 만든다.

String getPlayerName(int num){ 
    ... 
} 

모든 목록을 보는 방법을 만들 수 있지만 더 효율적인 방법으로이 작업을 수행하려고합니다. 누군가 내게 몇 가지 팁을 줄 수 있습니까?

도움 주셔서 감사합니다.

+0

클래스가? –

+0

질문을보다 명확하게 작성해야합니다. 예를 들어, 게시자가 게시 한 클래스가 아니라 생성자입니다. 또한 마지막 구절 ("나는 방법을 만든다 ...")은 거의 읽을 수 없습니다 ... 우리 모두는 당신이 원하는 것을 얻습니다 (아마도 ^^). 그러나 문제는 깨끗하지 않습니다. – brimborium

+0

그 종류의 대답은 전혀 대답이없는 최악입니다. 저는 영어 원어민이 아닙니다. 저는 이것이 생성자라는 것을 알고 있습니다. 이해할 수있는 다른 사람들이 생각하는 예일뿐입니다! 감사합니다. – rgomes

답변

3

모든 플레이어를 저장하려면 Map<Integer, Player>을 사용하십시오. 하여 맵에서 플레이어를 가져 오기 그의 num 매우 efficent 될 것입니다 : 당신이 자신의 수에 따라 선수를 반환하려는 경우

map.get(num); 
+0

! 그게 내가 원하는거야. – rgomes

1

이있는 경우에만 목록이 있습니다. 목록을 반복하는 것보다 더 효율적으로 할 수있는 방법이 없습니다. 올바른 번호의 플레이어를 찾고 이름을 반환하는 것보다 효율적입니다.

나는 단지

public Player getPlayerByNumber(int num) 

하지만 방법을 변경하고, 호출자가 나중에 이름을 얻을 수 있도록 유혹 할 것입니다. 나중에 다른 값을 가져 오려면 더 유연합니다.

데이터 구조를 변경하려는 경우 목록 대신 Map<Integer, Player>을 사용할 수 있습니다. HashMap과 같이 효율적인 액세스가 가능합니다. 게재 신청서를 보존해야하는 경우 LinkedHashMap을 사용하고 싶지만 반드시 필요하지는 않습니다.

0

음, "올바른"데이터 구조는 다음지도 것 playerMap.get (playerNumber)을 사용하여 해당 번호에 해당하는 Player를 가져옵니다.

0
String getPlayerName(int num) { 

for(Player player:listPlayers) { 
    if(player.getNum() == num) { 
    return player.getName(); 
    } 
} 
return null; 
} 
+0

int는 객체가 아니므로 –

+0

와 같음을 사용할 수 없습니다. 답변을 편집 –

+0

당신은 환영합니다 –

0

이 시도 .. 더 좋은 방법을 사용 수집

public String getPlayerName(int num){ 

    for (Player p : listPlayers){ 

      if (p.getNum()==num){ 

       return p.getName(); 
       break(); 
      } 


    } 

      return null; 

} 

을 같은지도로

+0

반환 후 휴식 시간은? 그리고 존재하지 않는 숫자를 지정하면 어떻게됩니까? –

+0

루프가 끝난 후 .. null 값과 일치하는 항목이없는 경우 메소드가 고갈됩니다. –

0

대신 ArrayList<Player>의 당신이 Map<Integer, Player> 가질 수있다, 당신은 플레이어 사용에 액세스 할 수 있습니다 num :

Map<Integer, Player> listPlayerList = new HashMap<Integer, Player>(); 

// fill in your players with the following line 
listPlayerList.add(player.getNum(), player); 

// remove a player 
listPlayer.remove(player.getNum(); 

// get player with specific num 
Player p = listPlayer.get(num); 
String name = p.getName(); 

// iterate over players 
for (Player p: listPlayer.values()) { 
    doStuffWith(p); 
} 

ArrayListMap으로 변경할 수 없다면 행운이 나서 ArrayList을 반복하고 모든 항목의 num을 확인해야합니다.