classTest{ publicstaticint[] getTop(int[][] data) { int rowSize = data.length; int columnSize = data[0].length;
// 创建一个columnSize大小的数组,存放结果 int[] result = newint[columnSize];
PriorityQueue<DataWithSource> maxHeap = new PriorityQueue<>(); for (int i = 0; i < rowSize; ++i) { // 将每个数组的最大一个元素放入堆中 DataWithSource d = new DataWithSource(data[i][0], i, 0); maxHeap.add(d); }
int num = 0; while (num < columnSize) { // 删除堆顶元素 DataWithSource d = maxHeap.poll(); result[num++] = d.getValue(); if (num >= columnSize) { break; }