我有一个拥有
的Player类int number;
在main中,我将它们存储在Array中。
Array<Player> players;
如何获得一个数字= 2的玩家?
答案 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;
}
}
}