【问题标题】:How to check if an element from an ArrayList is equal to a certain value?如何检查 ArrayList 中的元素是否等于某个值?
【发布时间】:2020-05-30 17:41:36
【问题描述】:

我有一个 ArrayList list1,其中包含以下值:{“A”、“A”、“A”、“B”、“B”、“A”、“C”、“C”、“B” , "B", "B"}.

我想计算每个字母(A、B 和 C)在 list1 中重复的次数。

我做了以下,但是结果是0。

for (i=0; i<=list1.size(); i++) {
    switch (list1.get(i)) {
        case "A":
            LetterA = LetterA + 1;
        case "B":
            LetterB = LetterB + 1;
        case "C":
            LetterC = LetterC + 1;
    }
}

Toast.makeText(getApplicationContext(), "Letter A repeats: " + LetterA + " times" + "\nLetter B repeats: " + LetterB + " times" + 
"\nLetterC repeats: " + LetterC + " times", Toast.LENGTH_LONG).show();

更新:问题是我不小心遍历了 list1 而不是 list2,它实际上包含了字母。但是,即使我更改了它,它仍然显示不正确的值。因此我将switch 更改为:

for (i=0; i<=list2.size(); i++) {
    if (list2.get(i).equals("A")) {
        LetterA = LetterA + 1;
    } else if (list2.get(i).equals("B")) {
        LetterB = LetterB + 1;
    } else if (list2.get(i).equals("C")) {
        LetterC = LetterC + 1;
    }
}

现在一切正常。

【问题讨论】:

  • 您是如何初始化 ArrayList 或如何将项目添加到 arrayList 的?
  • 所以基本上你在循环之后得到了什么值?都是零吗?
  • 您的代码应该会崩溃,因为您使用的是 i=0; i
  • 不,这也解决不了问题……如果我没记错,它仍然会给你零,是的,检查后更新我
  • 我假设它本身没有进入循环......你不能发布完整的代码吗?我建议这样做..如果可能的话

标签: android android-studio arraylist switch-statement


【解决方案1】:

你能试试这个吗?

        Map<String, Long> counted = list1.stream()
            .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

        System.out.println(counted);

【讨论】:

  • 这不是假设 OP 使用的是 API 级别 24+ 吗?
猜你喜欢
  • 1970-01-01
  • 2023-04-02
  • 2012-05-03
  • 1970-01-01
  • 1970-01-01
  • 2014-12-03
  • 2017-03-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多