【问题标题】:Classify variables according to their values [closed]根据变量的值对变量进行分类[关闭]
【发布时间】:2020-02-09 11:10:59
【问题描述】:

我有 5 个具有以下值的变量。

int john = 0;
int caleb = 0;
int justin = 0;
int loic = 0;
int lala = 0;




DatabaseReference productRef = FirebaseDatabase.getInstance().getReference().child("Product");
    productRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for (DataSnapshot ds: dataSnapshot.getChildren()){
                String getName = ds.child("name").getValue(String.class);

                if (getName.equals("john")){
                    john++;
                }else if (getName.equals("caleb")){
                    caleb++;
                }else if (getName.equals("justin")){
                    justin++;
                }else if (getName.equals("loic")){
                    loic++;
                }else if (getName.equals("lala")){
                    lala++;
                }
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

从数据库中获取数据后,我有:

int john = 3;
int caleb = 15;
int justin = 30;
int loic = 20;
int lala = 0;

我想要的是根据他们的价值观将他们分类为第一,第二,第三......,拥有类似的东西。

justin = 30;
loic = 20;
caleb = 15;
john = 3;
lala = 0;

我正在使用 java、Android 工作室。 提前谢谢你。

【问题讨论】:

  • 你确定你只有这 5 个名字吗?或者你想要所有名字的排名?
  • @AjahnCharles 目前有这 5 个名字,但如果我想对所有名字进行排名,我该怎么办

标签: java firebase android-studio firebase-realtime-database


【解决方案1】:

因此,不要使用 5 个变量,而是以这种方式初始化 map

Map<String, Integer> map = new HashMap<>();
map.put("john", 0);
map.put("caleb", 0);
map.put("justin", 0);
map.put("loic", 0);
map.put("lala", 0);

然后,你的方法应该是:

@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
    Integer currentCount = 0;
    for (DataSnapshot ds: dataSnapshot.getChildren()){
        String getName = ds.child("name").getValue(String.class);
        currentCount = map.get(getName);
        map.put(getName, currentCount+1);
    }
    //You can print your values using this
    List<Map.Entry<String, Integer>> entryList = new ArrayList<>(map.entrySet());
    entryList.sort(Map.Entry.comparingByValue(Comparator.reverseOrder()));

    for (Map.Entry<String, Integer> entry : entryList) {
        System.out.printf("%s = %s; \n", entry.getKey(), entry.getValue());
    }
}

【讨论】:

  • 我会交换键和值
  • 谢谢.... 但是如何以可编程的方式将变量放入 Hashmap
  • @MarcinOrlowski 我已经编辑了我的答案。
  • @user12010856 如果您手动创建变量,则无需以编程方式执行任何操作
猜你喜欢
  • 2023-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-14
  • 2022-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多