给出一个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(???))
任何帮助将不胜感激!
答案 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)
方法很多,但只有一种:
创建一个新的类型为string:int的多维数组。
遍历数组的最后一个索引,然后检查数组是否存在于您创建的数组中。