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

时间:2015-05-11 12:04:17

标签: arrays libgdx

我有一个拥有

的Player类
int number;

在main中,我将它们存储在Array中。

Array<Player> players;

如何获得一个数字= 2的玩家?

3 个答案:

答案 0 :(得分:1)

这个问题一般是编程,有几种方法可以做你说的,我建议你寻找OOP。

一个解决方案,一般来说,会封装变量,“创建getter和setter,你需要,例如:

这是一个简单的类;

private int number;

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

public int getNumber (){
   return number;
}

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

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

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'
    }
}

但我认为这个问题只是一个品味或需求的问题

答案 1 :(得分:0)

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

假设您的Player类中有一个构造函数:

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

你已经在你的arraylist中添加了一些玩家:

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));
    }
}

答案 2 :(得分:0)

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

那些推荐你遍历数组的人是正确的,但如果你有很多玩家,这将是无效的。在这种情况下,最好使用一个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;
        }
    }
}