Java 从列表中的自定义类返回字符串

Java 从列表中的自定义类返回字符串,java,class,list,Java,Class,List,我有一个一流的球员 public Player (String name, int num) { name = name; num= num; } //接球手和接球手 然后我会有一份球员名单 List<Player> listPlayers = new ArrayList<Player>(); 我可以让这个方法看到所有的列表,但是我想用一种更有效的方式来实现。 有人能给我一些提示吗 感谢您的帮助。如果您只获得了列表,那么没有什么比在列表中迭代、找到正

我有一个一流的球员

public Player (String name, int num) {
    name = name;
    num= num;
}
//接球手和接球手

然后我会有一份球员名单

List<Player> listPlayers = new ArrayList<Player>(); 
我可以让这个方法看到所有的列表,但是我想用一种更有效的方式来实现。 有人能给我一些提示吗

感谢您的帮助。

如果您只获得了列表,那么没有什么比在列表中迭代、找到正确号码的玩家并返回姓名更有效的了

我很想把方法改成

public Player getPlayerByNumber(int num)
不过,之后让打电话的人知道姓名。如果您以后想要获取其他值,它会更灵活

如果您愿意更改数据结构,可以使用
映射
而不是列表-类似于
哈希映射
的东西将允许高效访问。如果需要保留插入顺序,您可能希望使用
LinkedHashMap
,但这可能不是必需的。

使用
Map
存储所有播放器。通过玩家的
num
从地图中获取玩家将非常有效:

map.get(num);

好的,如果您试图根据球员的号码返回球员,“正确”的数据结构将是一个地图,那么您可以使用playerMap.get(playerNumber)来获取与该号码对应的球员。

试试这个

String getPlayerName(int num) {

for(Player player:listPlayers) {
    if(player.getNum() == num) {
    return player.getName();
    }
}
return null;
}
public String getPlayerName(int num){

   for (Player p : listPlayers){

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

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


    }

           return null;

}

为了获得更好的方法,请使用诸如Map的集合,而不是
数组列表,您可以使用
Map
,然后使用
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);
}
Map listPlayerList=newhashmap();
//用下面一行填写你的球员
添加(player.getNum(),player);
//除名
移除(player.getNum();
//获取具有特定数值的玩家
Player p=listPlayer.get(num);
字符串名称=p.getName();
//迭代玩家
对于(Player p:listPlayer.values()){
多斯塔夫韦(p);
}

如果你不能将你的
ArrayList
更改为
Map
,那么你的运气就不好了,必须迭代你的
ArrayList
,检查每个条目的
num

哪一类的方法?你应该尝试更清楚地表述你的问题。例如,那不是你发布的类,而是一个constr还有,你的最后一句话(“我创造方法…”)几乎是不可读的…我们都能得到你想要的(也许^^),但问题并不清楚。这种类型的答案最糟糕,根本没有答案。我不是英语母语。对不起。我知道构造函数只是一个例子,我认为其他人可以帮助理解!int不是一个对象,所以你不能使用equals为什么在返回后使用break?如果你指定一个s not present?循环结束后。如果找不到与null值匹配的项,则该方法将被耗尽
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);
}