如何计算数组列表中每个对象的数量(Java)?

如何计算数组列表中每个对象的数量(Java)?,java,arraylist,Java,Arraylist,我是一名Java初学者,所以这可能是一个非常基本的问题,但我还没有在任何地方找到答案 我想知道如何计算数组列表中每个对象的数量,如果代码中没有命名这些项目 我有两个类,一个模拟自动售货机,另一个代表零食。零食类的构造函数将零食类型初始化为字符串类型,如下所示: public TypeOfSnack(String SnkType) 然后在自动售货机类中,这些可以添加到arraylist中。此字段为: private ArrayList<TypeOfSnack> snacks; 这只

我是一名Java初学者,所以这可能是一个非常基本的问题,但我还没有在任何地方找到答案

我想知道如何计算数组列表中每个对象的数量,如果代码中没有命名这些项目

我有两个类,一个模拟自动售货机,另一个代表零食。零食类的构造函数将零食类型初始化为字符串类型,如下所示:

public TypeOfSnack(String SnkType)
然后在自动售货机类中,这些可以添加到arraylist中。此字段为:

private ArrayList<TypeOfSnack> snacks;
这只是给了我总量,而不是通过方法传递的总量


谢谢

据我所知,您想将每个零食的编号存储在一个数组列表中。
ArrayList不适合此问题,您应该使用HashMap。

可能类似于以下代码:

HashMap<String, Integer> snacks = new HashMap<String, Integer>();
snacks.put("Chips", 5);
snacks.put("Fried", 2);
或者如果你想按自己的方式做:

public int getNumberOf(String snackType) {
    int value = 0;
    for(TypeOfSnack s : snacks) {
        if(s.getType().equals(snackType)) { 
            value++;
        }
    }
}

您可以将实际列表转换为唯一的项目列表,然后使用该方法了解同一元素在列表中出现的次数

例如:

public static void main(String[] args) {
    List<Integer> numbers = new ArrayList<>();
    numbers.add(5);
    numbers.add(5);
    numbers.add(5);
    numbers.add(3);
    numbers.add(5);
    numbers.add(5);
    numbers.add(2);
    numbers.add(5);

    Map<Integer, Integer> result = new HashMap<>();

    for(Integer unique : new HashSet<>(numbers)) {
        result.put(unique, Collections.frequency(numbers, unique));
    }

    System.out.println(result);
}
publicstaticvoidmain(字符串[]args){
列表编号=新的ArrayList();
增加(5);
增加(5);
增加(5);
增加(3);
增加(5);
增加(5);
增加(2);
增加(5);
映射结果=新的HashMap();
for(唯一整数:新哈希集(数字)){
结果.放置(唯一,集合.频率(数字,唯一));
}
系统输出打印项次(结果);
}
输出:

{2=1,3=1,5=6}


您将如何用任何其他编程语言进行编程?如果你真的有一盒零食,并被要求计算Mars酒吧的数量,你会怎么做?你说你想返回每种类型的零食数量,但你的函数返回int。可能从一个函数开始,获取零食并检查机器中有多少零食。德国劳埃德船级社
public int getNumberOf(String snackType) {
    int value = 0;
    for(TypeOfSnack s : snacks) {
        if(s.getType().equals(snackType)) { 
            value++;
        }
    }
}
public static void main(String[] args) {
    List<Integer> numbers = new ArrayList<>();
    numbers.add(5);
    numbers.add(5);
    numbers.add(5);
    numbers.add(3);
    numbers.add(5);
    numbers.add(5);
    numbers.add(2);
    numbers.add(5);

    Map<Integer, Integer> result = new HashMap<>();

    for(Integer unique : new HashSet<>(numbers)) {
        result.put(unique, Collections.frequency(numbers, unique));
    }

    System.out.println(result);
}