欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java对大量无序数据获取前N个的代码,java获取,/** * list类型

来源: javaer 分享于  点击 23421 次 点评:269

Java对大量无序数据获取前N个的代码,java获取,/** * list类型


/** * list类型有序的存储 * @author wWX154783 */public class LimitStorageList{    private long maxTopN;// topN最大值    private List<KeyCountPair> topNList;// 存储topN的list    public LimitStorageList()    { }    public LimitStorageList(long maxTopN, List<KeyCountPair> list)    {        this.maxTopN = maxTopN;        this.topNList = list;    }    /**     * 加入keyCountPair对象     */    void put(KeyCountPair keyCountPair)    {        // 判断topN有没有达到最大值        if (topNList.size() < this.maxTopN)// topN没有超过最大值        {            int index = isExist(keyCountPair);            if (index == -1)// 不重复            {                topNList.add(keyCountPair);                insertSort(topNList);            }            else            {                topNList.remove(keyCountPair);                topNList.add(keyCountPair);                insertSort(topNList);            }        }        else        {            // 判断加入值和最后一个值的大小            if (-1 == (keyCountPair.compareTo(topNList.get(topNList.size() - 1))))// 新加入的值大于topNList最后一个值            {                // 判断新加入对象和topNList里面有没有重复对象                int index = isExist(keyCountPair);                if (index == -1)// 没有重复                {                    topNList.set(topNList.size() - 1, keyCountPair);                    insertSort(topNList);                }                else                {                    topNList.remove(keyCountPair);                    topNList.add(keyCountPair);                    insertSort(topNList);                }            }        }    }    /**     * 插入排序,只对最后一个值排序     */    private static void insertSort(List<KeyCountPair> topNList)    {        // 排序        int i = topNList.size() - 1;        KeyCountPair temp = topNList.get(i);        int j = i - 1;        for (; j >= 0 && (temp.compareTo(topNList.get(j)) == -1); j--)        {            topNList.set(j + 1, topNList.get(j));        }        topNList.set(j + 1, temp);    }    /**     * 判断topNList是否存在新加入的对象     * @return -1不重复     */    int isExist(KeyCountPair keyCountPair)    {        KeyCountPair keyCountPairTemp;        for (int i = 0, length = topNList.size(); i < length; i++)        {            keyCountPairTemp = topNList.get(i);            if (keyCountPairTemp.getKey().equals(keyCountPair.getKey()))            {                return i;            }        }        return -1;    }...set,get...}
相关栏目:

用户点评