我在C#中有一个代码,它将显示数组元素出现的次数。 我的C#代码使用LINQ可以很好地完成此任务。
但是我想知道如何在Java中完成相同的任务,在Java中是否有LINQ的等效项?
C#代码
int[] numbers = new int[10];
Console.WriteLine("Input 10 numbers: ");
for(int i = 0; i < numbers.Length; i++)
{
numbers[i] = Int32.Parse(Console.ReadLine());
}
var groups = numbers.GroupBy(v => v);
foreach (var group in groups)
{
Console.WriteLine("Value {0} has {1} items", group.Key, group.Count());
}
Console.ReadLine();
答案 0 :(得分:0)
没有为此预先存在的库。
但是,您可以使用HashMap
来轻松实现此目的。
//define array / input
int[] array = {1, 2, 4 , 5, 1, 2, 5};
HashMap<Integer, Integer> frequencyMap = new HashMap<>();
for(int i = 0; i < array.length; ++i) {
if(frequencyMap.get(array[i]) == null) {
// new element
frequencyMap.put(array[i], 1);
} else {
// already present, increase count
frequencyMap.put(array[i], frequencyMap.get(array[i]) + 1);
}
}
for(Integer key: frequencyMap.keySet()) {
System.out.println(key + " has " + frequencyMap.get(key) + " items.");
}