计算二维阵列中的特定条件

时间:2018-08-17 02:55:06

标签: java multidimensional-array

给出一个2D数组,在相同的第3列计数数字数据。

例如,

 String[][] array = {
                    { "red", "value1", "alpha"  },
                    { "blue", "value2", "alpha"  }, 
                    { "green", "value3", "alpha"  }, 
                    { "black", "value4", "alpha" },
                    { "grey", "value1", "beta"  },
                    { "white", "value2", "beta"  }, 
            };

          int counter=0;
          for(String[] subArray : array)
              for(String string : subArray)
                  if(string.toLowerCase().equals("beta"))
                      counter++;

          System.out.println(counter); 

beta = 2和alpha = 4的计数器输出。

假设我不知道第3列中数据的确切名称,该如何计算条件? if(string.toLowerCase().equals(???))

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:2)

在Java 8中使用groupingBy可能是这样的:

 Arrays.stream(array)
       .collect(Collectors.groupingBy(arr -> arr[2], Collectors.counting()));

结果将:

{alpha=4, beta=2}

B.T.W如果要忽略大小写,请执行以下操作:

Arrays.stream(array)
      .collect(Collectors.groupingBy(arr -> arr[2].toLowerCase(), Collectors.counting()));

答案 1 :(得分:1)

创建一个Map<String, int>

在地图中查找string.toLowerCase的值,如果找到,请增加int的值,否则插入1的值

答案 2 :(得分:0)

方法很多,但只有一种:

  1. 创建一个新的类型为string:int的多维数组。

  2. 遍历数组的最后一个索引,然后检查数组是否存在于您创建的数组中。

  3. 如果存在,则将int补偿为int + 1。
  4. 如果不存在,请添加并添加int = 1