我研究过如何找到字符串数组中有多少重复的字符串。我想我已经正确地完成了这个,但我正在使用的方法要求我返回一个字符串值,但它不会让我返回值。简而言之,我正在努力寻找大多数患有“食物中毒”的食物最近吃过的食物。当它被重复5次时,“常见食物”需要是阵列中的值。有什么建议?
您可以使用strems
查找数组中最常见的元素
import java.util.Comparator;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
String[] data = {"A", "A", "A", "B", "B", "C"};
Map.Entry<String, Long> entry = Stream.of(data)
.collect(Collectors.groupingBy(w -> w, Collectors.counting()))
.entrySet()
.stream()
.max(Comparator.comparing(Map.Entry::getValue))
.orElse(null);
if (entry != null) {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
}
}
在这些情况下,您可以使用地图进行优化和可用性。
以下是您的方法。我没有写所有数据。
我创建了一个fodMap。
static String mostCommonFood() {
String data[] = {"a","b"};
Map<String, Integer> foodMap = new HashMap<>();
for (String val : data) {
if (foodMap.containsKey(val)) {
foodMap.put(val, foodMap.get(val)+1);
} else {
foodMap.put(val, 1);
}
}
String mostCommonFood = "";
int mostCommonFoodValue = 0;
for(Map.Entry<String, Integer> foods : foodMap.entrySet()) {
if(foods.getValue() > mostCommonFoodValue) {
mostCommonFoodValue = foods.getValue();
mostCommonFood = foods.getKey();
}
}
return mostCommonFood;
}