我正在尝试对数字列表进行评分,例如。[297, 720, 840, 903, 1110, 1170] 在 1 到 10 的范围内,10 是最低的,1 是最高的。
所以 list.get(0) 将是 9/10 或 10/10,而 list.get(2) 将是 10 中的 5 或 6。
我怎样才能在java中做到这一点?
我正在尝试对数字列表进行评分,例如。[297, 720, 840, 903, 1110, 1170] 在 1 到 10 的范围内,10 是最低的,1 是最高的。
所以 list.get(0) 将是 9/10 或 10/10,而 list.get(2) 将是 10 中的 5 或 6。
我怎样才能在java中做到这一点?
我建议类似:note = 10 - 9 * (value - minValue) / (maxValue - minValue)
List<Integer> list = Arrays.asList(297, 720, 840, 903, 1110, 1170);
Collections.sort(list);
Integer min = list.get(0);
Integer max = list.get(list.size() - 1);
List<Integer> notes = new ArrayList<Integer>();
for (Integer i : list) {
notes.add(10 - (int) 9.0 * (i - min) / (max - min));
}
System.out.println(notes);
这使:
[10, 6, 5, 4, 2, 1]