我正在制作一款游戏,我可以计算完成游戏所需的大量点击次数。我想将大量的点击次数和玩家的名字添加到ArrayList中。目标是使得有可能像某种高分表一样安排分数。
问题是,我如何做到这一点,以便将hte播放器的名称和点击量存储在同一位置,这样当我安排高分时,玩家名称将保持与点击量的连接?
答案 0 :(得分:1)
只需创建一个包含所需信息的类。
class PlayerClicks{
private String palyerName;
private int clicksCount;
// add more data if needed
// getter & setter
}
现在创建ArrayList
类型PlayerClicks
对象,例如
List<PlayerClicks> list = new ArrayList<PlayerClicks>();
现在回答你的问题:我们的目标是能够像某种高分榜一样安排分数。
只需创建一个Map<Integer,List<PlayerClicks>>
,其中包含List<PlayerClicks>
作为值并将得分作为关键字,例如
Map<Integer,List<PlayerClicks>> highScores = new TreeMap<Integer,List<PlayerClicks>>();
默认情况下, TreeMap
按键分数排序。现在获得所有具有相同分数的球员名单。
答案 1 :(得分:1)
ArrayList
可以在每个位置存储一个元素。因此,如果必须使用ArrayList,则可以定义要存储在列表中的Score对象:
public class Score {
private String name;
private int score;
public Score(String n, int s) {
name = n;
score = s;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
...并在ArrayList中添加Score对象:
ArrayList<Score> highScores = new ArrayList<Score>();
highScores.add( new Score("Tom",22) );
highScores.add( new Score("Dick",17) );
highScores.add( new Score("Harry",19) );
答案 2 :(得分:1)
我会维护一个包含名称和点击次数的对象列表。为了使它像高分表一样工作,让对象的类实现可比较,然后在列表上调用Collections.sort()。这是一个如何工作的例子:
import java.util.ArrayList;
import java.util.Collections;
public class HighScoreTest {
static class Player implements Comparable<Player>{
private String name;
private int clicks;
public Player(String name, int clicks){ this.name = name; this.clicks = clicks; }
public String getName(){ return name; }
public int getClicks(){ return clicks; }
@Override
public int compareTo(Player o) {
return Integer.compare(o.clicks, clicks);
}
}
public static void main(String[] args) {
ArrayList<Player> players = new ArrayList<Player>();
players.add(new Player("Mark", 3));
players.add(new Player("Jane", 5));
players.add(new Player("Bert", 4));
Collections.sort(players);
for (Player p : players) {
System.out.println(p.getName() + " has " + p.getClicks() + " clicks!");
}
}
}
打印:
简有5次点击!
伯特有4次点击!
马克有3次点击!
...表现得像一个高分,易于使用,不需要地图。它还将支持具有相同点击量的玩家。
答案 3 :(得分:0)
好吧,你可以创建一个Map<String, Integer>
,其中字符串是玩家的名字,整数是分数。
然后,您可以将所有内容放入列表中。
答案 4 :(得分:0)
您应该使用Map<String, Integer>
,其中键将是用户名,值将是点击次数。
一个例子:
private Map<String, Integer> scores = new HashMap<>();
private incrementScore(String userName) {
Integer newScore = scores.get(userName) + 1;
scores.put(userName, newScore);
}