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'
}
}
不过我觉得这个问题有点个人品味或者你有什么需求
我有一个播放器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'
}
}
不过我觉得这个问题有点个人品味或者你有什么需求