私が取り組んでいるゲームのハイスコア画面を作成しようとしています。以前のプレイヤーのトップ 10 スコアと、プレイを終了したばかりのプレイヤーのスコアをランキング (ハイスコアのリストの順序) とともに表示したいと考えています。このハイスコアのリストは、スコアに従ってソートされ、スコアが同じ場合はスコアに従ってソートされます。私はこれをしようArrayLists
とTreeSets
しました。これらの両方を取得してデータを適切に並べ替えることができますが、プレイを終了したばかりのプレーヤーの特定の情報を引き出すのに問題があります。
マップを見てきましたが、データを並べ替えたい方法では機能しないようです。誰かがこの問題の解決策を教えてもらえますか?
以下は、そのうちの 1 つのために作成した小さなスクラッチ プログラムです。
public class Tree_set_test {
public static void main(String[] args) throws IOException {
String sName;
int nAge, nNum, i=0;
SortedSet<CFriend> tsFriends = new TreeSet<CFriend>();
sName = "Jason";
nAge = 5000;
nNum = tsFriends.size() + 1;
CFriend c1= new CFriend(sName,nAge,nNum);
tsFriends.add(new CFriend(sName,nAge,nNum));
sName = "Kenny";
nAge = 200;
nNum = tsFriends.size() + 1;
CFriend c2= new CFriend(sName,nAge,nNum);
tsFriends.add(new CFriend(sName,nAge,nNum));
sName = "Smile";
nAge = 100;
nNum = tsFriends.size() + 1;
tsFriends.add(new CFriend(sName,nAge,nNum));
sName = "Hossein";
nAge = 200;
nNum = tsFriends.size() + 1;
tsFriends.add(new CFriend(sName, nAge,nNum));
sName = "People";
nAge = 200;
nNum = tsFriends.size() + 1;
tsFriends.add(new CFriend(sName, nAge,nNum));
Iterator itFriends = tsFriends.iterator(); // see note below on iterators.
while (itFriends.hasNext()) {
i++;
System.out.println(itFriends.next());
}
}
}
class CFriend implements Comparable<CFriend> {
String sName;
int nScore, nNum;
CFriend(String _sName, int _nAge, int _nNum) {// constructor to load vars
sName = _sName;
nScore = _nAge;
nNum=_nNum;
}
public int compareTo(CFriend other) {
if (nScore > other.nScore) {
return -1;
}
else if (nScore < other.nScore) {
return 1;
}
else {
if (sName.compareTo(other.sName) < 0) {
return -1;
}
else if (sName.compareTo(other.sName) > 0) {
return 1;
}
else {
return 0;
}
}
}
public String toString() {
return sName + " " + String.valueOf(nScore);
}
}
c1
とc2
が のどこにあるかを確認し、とTreeSet
と一緒に表示したい。name
age