java - Get top 10 and last 10 from a million records -


i have report shows 2-4 million records. records oracle java , push excel report. done!

now, need add new tab top 10 , last 10 records. best way it?

should use priorityqueue implementation in java or use binary tree keep track of top 10 , last 10. don't need store billion records in data structure. need save 10 @ time. ex:

priorityqueue<dataobject> queuetop10 = new priorityqueue<dataobject>(10, topcomparator); priorityqueue<dataobject> queuelast10 = new priorityqueue<dataobject>(10, leastcomparator);     while (data coming database)     {     // push excel stuff here     queuetop10 .add(dataobject);   or binarytreetop.insert(dataobject)     queuelast10.add(dataobject);   or binarytreeleast.insert(dataobject)     } 

please let me know if can use other data structure well.

thanks

top hit algorithms use min-heap (priorityqueue in java), there should size checking in algorithm. suppose each item has score, , want collect 10 items highest score. priorityqueue efficiently exposes item lowest score:

priorityqueue<dataobject> top = new priorityqueue(10, comparator); (dataobject item : items) {   if (top.size() < 10) top.add(item);   else if(comparator.compare(top.peek(), item) < 0) {     top.remove();     top.add(item);   } } 

Comments

Popular posts from this blog

android - MPAndroidChart - How to add Annotations or images to the chart -

javascript - Add class to another page attribute using URL id - Jquery -

firefox - Where is 'webgl.osmesalib' parameter? -