为了账号安全,请及时绑定邮箱和手机立即绑定

根据变量的值对变量进行分类

根据变量的值对变量进行分类

倚天杖 2023-10-13 15:29:44
我有 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 studio。先感谢您。
查看完整描述

1 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

因此,不要使用 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());

    }

}


查看完整回答
反对 回复 2023-10-13
  • 1 回答
  • 0 关注
  • 105 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信