猿问

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

我有 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。先感谢您。


倚天杖
浏览 106回答 1
1回答

慕村9548890

因此,不要使用 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);然后,你的方法应该是:@Overridepublic void onDataChange(@NonNull DataSnapshot dataSnapshot) {&nbsp; &nbsp; Integer currentCount = 0;&nbsp; &nbsp; for (DataSnapshot ds: dataSnapshot.getChildren()){&nbsp; &nbsp; &nbsp; &nbsp; String getName = ds.child("name").getValue(String.class);&nbsp; &nbsp; &nbsp; &nbsp; currentCount = map.get(getName);&nbsp; &nbsp; &nbsp; &nbsp; map.put(getName, currentCount+1);&nbsp; &nbsp; }&nbsp; &nbsp; //You can print your values using this&nbsp; &nbsp; List<Map.Entry<String, Integer>> entryList = new ArrayList<>(map.entrySet());&nbsp; &nbsp; entryList.sort(Map.Entry.comparingByValue(Comparator.reverseOrder()));&nbsp; &nbsp; for (Map.Entry<String, Integer> entry : entryList) {&nbsp; &nbsp; &nbsp; &nbsp; System.out.printf("%s = %s; \n", entry.getKey(), entry.getValue());&nbsp; &nbsp; }}
随时随地看视频慕课网APP

相关分类

Java
我要回答