如题,从最大的10000000个元素里面找出最大的前100个,下面是我的代码实现:
import java.util.Comparator; import java.util.PriorityQueue; import java.util.Random; import java.util.logging.Logger; public class FixSizedPriorityQueue<E extends Comparable> { private final static Logger logger = Logger.getLogger(FixSizedPriorityQueue.class.getName()); private PriorityQueue<E> queue; private int maxSize; // 堆的最大容量 public FixSizedPriorityQueue(int maxSize) { if (maxSize <= 0) throw new IllegalArgumentException(); this.maxSize = maxSize; this.queue = new PriorityQueue(maxSize, new Comparator<E>() { @Override public int compare(E o1, E o2) { return o1.compareTo(o2); } }); } public void add(E e) { if (queue.size() < maxSize) { queue.add(e); } else { E peek = queue.peek(); if (e.compareTo(peek) > 0) { queue.poll(); queue.add(e); } } } public PriorityQueue<E> getQueue(){ return queue; } public static void main(String[] args) { final int length = 10000000; final int maxSize = 100; FixSizedPriorityQueue<Integer> fixedQueue = new FixSizedPriorityQueue<Integer>(maxSize); Random random = new Random(); for(int i =1; i < length; i++){ fixedQueue.add(random.nextInt(i)); } PriorityQueue<Integer> queue = fixedQueue.getQueue(); Object obj = queue.poll(); while(obj != null){ logger.info(obj.toString()); obj = queue.poll(); } } }
相关推荐
如何在某集合里面找出最大或最小的K个元素。 解决思路: 找出最大或最下的K个元素,可以使用Python库中的heapq模块,该模块提供两个函数nlargest()求最大K个和nsmallest()求最小K个。 下面我们举例说明: import ...
问题描述:一个int数组,里面数据无任何限制,要求求出所有这样的数a[i],其左边的数都小于等于它,右边的数都大于等于它。能否只用一个额外数组和少量其它空间实现。 思路:如果能用两个辅助数组,那么相对来说...
3. 1~100共一百个自然数,放入一个只有99个元素的数组中,找出没有被放入数组的这个数; 4. 字符串的反转输出 5. 截取字符串, 如果该字符串是“abc我的”,当截取的字节数是3时候就是"abc',如果是4,依然是 abc,也...
有一个n×m的矩阵,要求找出其中值最大的那个元素所在的行号和列号,以及该元素之值。 林大OJ (951题) Input 输入数据有多组,每组第1行有2个正整数m和n(2 ,n ),接下来有m行n列的数据a(ij),(1 (ij)<=100); ...
具有这样特点的6位数还有一个,请你找出它! 再归纳一下筛选要求: 1. 6位正整数 2. 每个数位上的数字不同 3. 其平方数的每个数位不含原数字的任何组成数位 答案是一个6位的正整数。 思路分析 暴力解决: 从最小的...
由于它里面的控件同样可以设置下一步的响应动作,所以从总体上来看,众多原型就像一个树状结构,而其中的父节点就是图二中的设置窗体了。这种结构具有一个很大的好处:无论你完成了多个界面的原型,只需要它们之间有...
这题是给你一个整数的数组,然后给你一个目标值,让你从这个数组中找出两个数相加等于这个目标值的数组索引值(不能是同一个元素)。 第一种解题思路就是两个for循环,第二个for循环的起始变量比第一个for循环起始...
从弹框中录入一个数字表示考试成绩(score) 如果 成绩为 100 分 ,提示 :满分 如果 成绩 >= 90 分 ,提示 :优 如果 成绩 >= 80 分 ,提示 :良 如果 成绩 >= 60 分 ,提示 :及格 否则 :提示 不及格 2、函数...
算法题(leetcode55题):给一个数组,例如[1,2,3,4,5],a[i]表示在该位置可以向前行走的最大距离,判断是否可以到达数组的最后一个元素。 2 场景题:让你设计一个微信发红包的api,你会怎么设计,不能有人领到的红包...
1.5.8. 给出一个数列,找出其中最长的单调递减(或递增)子序列..............121 1.5.9. 四对括号可以有多少种匹配排列方式.................................................124 1.5.10. 输入一个正数 n,输出...
SessionBean: Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要建立一个Bean的实例时,EJB容器不一定要创建一个新的Bean的实例供客户机调用,而是随便找一个现有的实例提供给客户机。...
对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以...
在对话框中会看到一个9*9的结构元素方阵,可以通过使用鼠标左键点击来改变结构元素的形状,双击鼠标为还原结构元素。 设定好结构元素后可以选择操作的四种方式,选择后便会得到处理后的图像了,十分方便。 当然,...
下载说明 ...REGSVR32 c:\AspUploadDir\AspUpload.dll ...这个可选的第二个参数指定是否一个文件大于最大字节数时候是被截断。(如果设置为fase,或者忽略。)或者遇上错误就放弃(如果设置发false)强制
思路:每一行的第一位和最后一位是1,没有变化,中间是前排一位与左边一排的和,这种算法是用一个二维数组保存,另外有种算法用一维数组也可以实现,一行一行的输出,有兴趣去写着玩下。 11 11 2 11 3 3 11 4 6 4 ...
这个功能是C1与LR的最大不同之一,用LR时,不导入就无法对图像进行编辑调整,而C1用户则可在会话的方式下,直接查看硬盘的目录树,在任意位置上打开图像文件。 然后,从目录树里直接选择图像文件并打开编辑...
当一个正则表达式成功地和目标字符串相匹配时,可以从目标串中抽出和括号中的子模式相匹配 的部分.例如,假定我们正在检索的模式是一个或多个字母后面跟随一位或多位数字,那么我们可以使用模式 / [a-z] + \ d+/.但是...
3.以下是求一个数的平方的程序,请找出错误: #define SQUARE(a)((a)*(a)) int a=5; int b; b=SQUARE(a++); 4.typedef unsigned char BYTE int examply_fun(BYTE gt_len; BYTE *gt_code) { BYTE *gt_buf; gt_buf=...
这是里面的一个测试页面 这就是管理的页面,不过相比看起来的确是简单的很多。 总体上那个说来,我们从整个过程中可以体会到这一点,Oxite下载很多地方还可以供大家继续发挥。相对来说,oxite确实是个轻量级的...
寻找读者的爱好 : 寻找你文章里最受欢迎的,找出读者的爱好。 <br>5 . 把你的目标加入文章中 : 在写作的内容里加入心理暗示,使读者注意到你想要达到的目标( 例如想要读者登记 ),尝试去猜测用户的目标是...