java - 从一个函数返回 2 个计数值

标签 java

我想创建一个返回两个计数值的函数。通过迭代 for 循环来对值进行计数。

例如,我有一组人(男性、女性、成人、 child ),我只想查找男孩的数量( child +男性)和女性的数量(成人+女性)。

在过去的几年里,我一直在用 javascript 编写代码,这就是我用 javascript 编写的代码。

function countBoysAndWomen() {
    var womenCounter = 0;
    var boysCounter = 0;

    for (var p of persons) {
        if (p.isAdult() && p.isFemale()) womenCounter++;
        else if (p.isChild() && p.isMale()) boysCounter++;
    }

    return {amountOfWomen: womenCounter, amountOfBoys: boysCounter};
}

现在我的问题是,如何在java中返回这样的对象?我需要创建一个新类吗?你会怎么称呼这个类?

仅仅为了这一点就搞一个完整的类,这不是效率极低吗?

如果我想计算一对不同的值怎么办?我是否必须创建另一个全新的类?

下面这实际上是创建此类函数的最佳方法吗?

private Counter countBoysAndWomen() {
     Counter counter = new Counter();

     for (Person p:persons) {
         if (p.isBoy()) counter.addBoy();
         else if (p.isWomen()) counter.addWoman();
     }

     return counter;
}

当然,另一种选择是将函数分成函数“countBoys()”和“countWomen()”,但这样我就必须迭代数组两次,这不是最佳选择,对吗?

最佳答案

您可以从主函数或任何方法中调用以下方法。它将返回所需值的 map 。在下面的代码中,我假设 people 是一个列表。但如果 person 是一个数组,则使用 length 方法更改 size() 。

public HashMap<String,Integer>  countBoysAndWomen() {

        int womenCounter = 0;
        int boysCounter = 0;
        HashMap<String,Integer> hm = new HashMap<>();
        for (int i = 0 ; i < persons.size() ; i++ ) {

            if (p.isAdult() && p.isFemale()){
              womenCounter++;
            }
            else if (p.isChild() && p.isMale()) {
            boysCounter++;
            }
        }
         hm.put("women",womenCounter );
         hm.put("boy" , boysCounter);

         return hm;
     }

用于检索 HashMap 值:-

 for (Map.Entry<String,String> entry : hm.entrySet())  
            System.out.println("Key = " + entry.getKey() + 
                             ", Value = " + entry.getValue()); 
    } 

关于java - 从一个函数返回 2 个计数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58123733/

相关文章:

java - 设置按下 Tab 时 JComboBox 中的插入符位置

java - 是否有任何开箱即用的 spring ingetration 模式用于使用动态队列中的消息并处理它们?

java - 从 ADF 中的 selectOneChoice 获取所选值而不是索引

java - 如何处理用户输入字符串中的撇号?

java - 如何在生成文件时处理 Spring Controller 上的异常

java - 泛型数组转换

java - 使用 json.org JSON,您可以使用字符串来帮助重新创建枚举吗?

java - 如何使用eclipse调用另一个java程序

java - 我可以在声明对象的同时创建对象的实例吗?

java - Collections.sort 不是排序