小编joe*_*e.d的帖子

从频率表中取出中位数(计算排序)

我无法理解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)

java sorting algorithm

4
推荐指数
1
解决办法
1212
查看次数

Java 8 Stream/Collectors映射键与Collectors.counting()

我想得到频率键控的数组值频率图.我能够相反 - 按价值键入地图.尝试切换参数,但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,并将值作为数组元素列表.对于键冲突,请将另一个值添加到值列表中.

java java-8 java-stream

2
推荐指数
1
解决办法
1509
查看次数

标签 统计

java ×2

algorithm ×1

java-8 ×1

java-stream ×1

sorting ×1