思路:根据出现次数最多的找众数,具体实现方法在代码里有注释
代码代写:2248557717
//求最大值
public static int getMax(List<Integer> list) {
int max = 0;
for (int i = 0; i < list.size(); i++) {
if (max < list.get(i)) {
max = list.get(i);
}
}
return max;
}
//求每一个属性的众数
public static List<Double> getModeIris(double[] array) {
Map<Double, Integer> map = new HashMap<>();
Set<Map.Entry<Double, Integer>> set = map.entrySet();
List<Integer> list = new ArrayList<>();
List<Double> listMode = new ArrayList<>();
//统计元素出现的次数,存入Map集合
for (double item : array) {
if (!map.containsKey(item)) {
map.put(item, 1);
} else {
map.put(item, map.get(item) + 1);
}
}
//将出现的次数存入List集合
for (Map.Entry<Double, Integer> entry : set) {
list.add(entry.getValue());
}
//得到最大值
int max = Iris.getMax(list);
//根据最大值获取众数
for (Map.Entry<Double, Integer> entry : set) {
if (entry.getValue() == max) {
listMode.add(entry.getKey());
}
}
for (Double item:listMode) {
System.out.println(item);
}
return listMode;
}
public static void main(String[] args) {
double[] arrays={
3.23,3.23,3.23,3.22,3.22,3.22,3.2};
System.out.println(Iris.getModeIris(arrays));
}
测试结果