计算所有值 Firebase Java API

Count all values Firebase Java API

我正在尝试计算 Java 中我的 firebase 数据库中的所有值。但它不起作用,我已经查看了一些教程,但没有找到适合 Java 程序员的教程。

这是我的数据库:

Language
  German
    Message
      -Jf6ShYy7niHrqg_x4Tc: "Tomorrow is very windy"
      -Jf9v0xHAxINUUANrORU: "Today is very windy and rainy"

这是我的代码,请注意我尝试使用计数最大值的行:

    Firebase f = new Firebase("https://myapp.firebaseio.com/Language/German/Message/");             
    f.addValueEventListener(new ValueEventListener() {

        public void onDataChange(DataSnapshot snapshot) {
            disp_msg = (TextView)findViewById(R.id.display_msg);
            //disp_msg.setText(snapshot.getValue().toString());
            Iterable<DataSnapshot> ds = snapshot.getChildren();
            Iterator<DataSnapshot> ids = ds.iterator();
            Map<String, Object> newPost = (Map<String, Object>) ids.next().getValue();
            String msg = newPost.get("pubMsg").toString();
            disp_msg.setText(msg.toString());

            //The line below does not work getting the maximum values
            int maxValueInMap=(Collections.max(newPost.values().toString())); 

        }

这是我在 Collections 的 max 函数处得到的错误:

The method max(Collection) in the type Collections is not applicable for the arguments (String)

有谁知道如何解决 Java 中的这个问题,在此先感谢。

它应该是:

int maxValueInMap=(Collections.max(newPost.values())); 

你不小心做了 .toString。 String 不是 Collection,因此 .max 无法处理它。

不过,我可能会推荐,看看您是否可以使用 limit 子句进行排序,因为一次又一次地 运行 Collections.max 可能会变得昂贵。我在 firebase 文档中看不到 TOP 函数,但这会更好。

在我的 firebase 子目录中运行,找到 firebase 函数:

            long maxNum = snapshot.getChildrenCount();
            int nums = (int)maxNum;
            disp_msg.setText(msg.toString() + Integer.toString(nums));