Libgdx - 如何从数组中获取特定项?

Libgdx - How to get a specific item from an array?

我有一个播放器class,其中有

int number;

在main中,我将它们存储在数组中。

Array<Player> players;

我怎样才能得到一个播放器,例如 number=2?

我将做一些假设来证明它:

假设您的 Player class:

中有一个构造函数
public Player(int num){
   this.number = num;
}

并且您在数组列表中添加了一些玩家:

players.add(new Player(1));
players.add(new Player(2));
players.add(new Player(3));

现在遍历你的数组并找到 number == 2

for (int i = 0; i < players.size(); i++){
    Player tmp = players.get(i);
    if(tmp.number == 2){
        System.out.println("Index of player number 2: " + players.indexOf(tmp));
    }
}

我意识到我误解了我之前回答的问题。这是一个更好的...

那些建议您遍历数组的人是正确的,但是如果您有很多玩家,这将是低效的。在这种情况下,最好使用一个 Map,其中键是玩家编号,值是玩家本身。

这里有一些示例代码展示了该方法(其中大部分只是设置一些测试数据)...

import java.util.HashMap;
import java.util.Map;

public class Temp {

    public static void main(String[] args) {

        // Create a map instead of an array
        Map<Integer, Player> players = new HashMap<>();

        // Quick hack just to put some data in it.
        for(int i = 0; i < 1000; i++) {
            players.put(i, new Player(i));
        }

        // Once they're in a map, retrieving them is simple...
        Player playerFromMap = players.get(537);

        // Check we got it right
        System.out.println(playerFromMap.getNumber()); // 537
    }

    private static class Player {

        private int number;

        private Player(int number) {
            this.number = number;
        }

        public int getNumber() {
            return number;
        }
    }
}

这题是一般的编程题,按照你说的有几种方法,建议你找OOP

一般的解决方案将封装变量,“创建 getter 和 setter,您需要,例如:

这是一个简单的 class;

private int number;

public Player(int num){
   this.number = num;
}

public int getNumber (){
   return number;
}

public void setNumber (int n){
   this.number = n;
}

。 在您的搜索代码中,您可以使用解决方案,使用 for 或迭代器

for (int a = 0; a < players.size(); a++){

    int tmpNumber = players.get(a).getNumber();

    if(tmpNumber == 2){
      players.get(a); //the object array with index equal to 
                      //the value of 'a', have, number 2 stored 
                      //in the variable 'number'
    }
}

不过我觉得这个问题有点个人品味或者你有什么需求