gpt4 book ai didi

java - 按值组织 HashMap(Firebase 数据库快照)

转载 作者:搜寻专家 更新时间:2023-11-01 08:33:42 25 4
gpt4 key购买 nike

Java 编程的新手,找不到这个问题的答案。

我为自己制作的一个小游戏创建了一个 Firebase 数据库,并设法正确存储分数。现在我想用前十名的分数建立排行榜。数据库本身由最高分索引,我得到前 10 名的分数:

mDatabase.child(gameName).child("Score").limitToFirst(10).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// Get user value
HashMap<String,Long> topScores = (HashMap<String, Long>) dataSnapshot.getValue();
....

问题在于(据我所知)我收到的是一个存储在 topScores 中的 HashMap。同样,据我目前的了解,HashMap 是无组织的,因此当您打印它时,它看起来像这样:

{DummyData1=0, try=0, dummy2=5, lalala=10, Name1=0, try2=0, lala=11, try3=0, la=3, dummy=1}

因此,没有明显的顺序。

最后,问题是您建议我如何对创建的 HashMap 进行排序,以便将键和值对存储在相应的 TextView 中(TextView 的第一行中的得分最高者和得分最高者,等等) .

As a reference, how I plan on showcasing the leaderboard

谢谢!

最佳答案

你做错了两件事:

  1. 您没有告诉 Firebase 按任何值对数据进行排序
  2. 您正在将结果转换为本质上无序的 Map

假设您在 Score 下有这个 JSON 结构(请在下次提问时将 JSON 作为文本发布):

Score

代码为:

mDatabase.child(gameName).child("Score")
.orderByValue().limitToLast(10).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot child: dataSnapshot.getChildren()) {
System.out.println(child.getKey()+"="+child.getValue(Long.class));
}

它会打印:

Puf=30

Polarbear0106=42

KatoWulf=60

关于java - 按值组织 HashMap(Firebase 数据库快照),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38423106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com