我无法理解getMedian方法背后的逻辑.如何评估中位数,元素数和元素总和之间的联系是什么?欣赏是否有人可以解释它的逻辑.
public static void main(String[] args) {
Random r = new Random();
int[] ar = r.ints(0, 100).limit(9).toArray();
int k = ar.length;
int[] count = getCounts(ar);
double median = getMedian(count, k);
System.out.println(median);
}
private static int[] getCounts(int[] ar) {
int[] count = new int[100];
for (int i = 0; i < ar.length; i++) {
count[ar[i]]++;
}
return count;
}
private static double getMedian(int[] count, int d) {
int sum = 0;
for (int i = 0; i < count.length; i++) { …Run Code Online (Sandbox Code Playgroud) 我想得到频率键控的数组值频率图.我能够相反 - 按价值键入地图.尝试切换参数,但grouping by不接受Collector作为第一个参数.
另一个问题,我如何更改Map实现以LinkedHashMap保持数组元素的排序(如果地图由值键入)?
int [] arr = {1, 4, 5, 9, 2, 4, 3, 1, 1, 3, 5, 3, 2, 4, 2, 9, 2, 1};
Map<Integer, Long> collect = Arrays
.stream(arr)
.boxed()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
Run Code Online (Sandbox Code Playgroud)
结果是 {1=4, 2=4, 3=3, 4=3, 5=2, 9=2}
我正在寻找的是
{4=1, 3=[4, 3] , 2=[5, 9] ... }这意味着有4次出现1次,3次出现4次,2次出现5次和9次.
我的目标是使用频率作为键获取Map,并将值作为数组元素列表.对于键冲突,请将另一个值添加到值列表中.