日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

1亿数字中找出重复次数TopN的问题

發布時間:2024/1/18 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1亿数字中找出重复次数TopN的问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*** @Date 2020/7/3* @param dataSize 數據量的大小* @param randomNumRange 產生隨機數的范圍* @param topN 找出重復次數前N的。* @return void* @Description 在大數據量的數字中查找重復次數前N個的數字 */public static void repeatTopN(int dataSize,int randomNumRange,int topN){long start = System.currentTimeMillis();int maxValue = randomNumRange;Map<Integer,Integer> map1 = new HashMap<Integer,Integer>();//存放key:數字 value:出現次數Map<Integer, List<Integer>> map2 = new HashMap<Integer,List<Integer>>();//存放 key:出現次數 value:數字Random r = new Random();for(int i = 0 ; i < dataSize ; i++){int number = r.nextInt(maxValue);int count = 1;if(map1.containsKey(number)){count = map1.get(number)+1;map1.put(number,count);}else{map1.put(number,1);}if(map2.containsKey(count)){//這里需要優化。出現次數最多的數字會在之前出現次數的List集合都存在。map2.get(count).add(number);}else{List list = new ArrayList<Integer>();list.add(number);map2.put(count,list);}}BitSet bs = new BitSet(); //使用BitSet的位向量 原理。對應下標位置如果設置則為true,否則為false//設置出現次數為bs對應下標的設置,這樣最大下標所對應的值為true。for(Map.Entry<Integer,Integer> entry : map1.entrySet()){bs.set(entry.getValue());}//注意:這里使用TreeSet 是為了解決上面最多出現次數的數字會在之前的list都出現一遍,為了去重和按照順序插入到result中Set <Integer> result = new TreeSet<Integer>();//倒序循環bs。只要值為true的。說明是出現過的最大次數。然后倒序輸出,使用出現次數從map2中查找對應的數字列表, 查找topN個數字。a:for(int j = bs.size();j>=0;j--){ //這里bs的size是2的n次冪。if(bs.get(j)){b:for(Integer num : map2.get(j)){if(result.size() > topN){ //result的大小 大于用戶需要取出的topN。退出循環break a;}//取出重復次數前topN的數字boolean flag = result.add(num);if(flag){//如果是不重復并且增加進去的則輸出數字出現的次數。System.out.println("["+num +"]出現過:"+j+"次");}}}}long end = System.currentTimeMillis();System.out.println(result);System.out.println("共耗時:"+((end-start)/1000) +"秒");}public static void main(String[] args) {repeatTopN(100000000,1000,5); }

以上是對這個問題單臺機器單線程的實現方式,里面有需要優化的地方,暫時沒有實現。忘大神多多指教。

總結

以上是生活随笔為你收集整理的1亿数字中找出重复次数TopN的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中文欧美日韩 | 无罩大乳的熟妇正在播放 | 国产理伦 | 国产二区视频在线观看 | 国内偷拍精品视频 | 国产熟妇乱xxxxx大屁股网 | 狠狠v欧美v日韩v亚洲ⅴ | 国产精品日韩专区 | 色吧五月天 | 中文字幕综合 | 女仆裸体打屁屁羞羞免费 | 伊人免费在线观看高清版 | 91成人精品国产刺激国语对白 | 蜜桃av网站 | 亚洲爱av| 欧美激情免费观看 | 91网址在线 | 91精东传媒理伦片在线观看 | 女厕厕露p撒尿八个少妇 | 黄色网页大全 | 天天躁日日摸久久久精品 | 黄视频网站在线 | 国产自产一区二区 | 亲切的金子片段 | 男人天堂久久久 | 免费黄色小视频 | 国产三级短视频 | 日韩污视频| 欧美视频一区二区三区四区在线观看 | 色www亚洲国产阿娇yao | 在线观看1区 | 在线日韩国产 | 欧美日韩亚洲国产精品 | 1000部啪啪未满十八勿入超污 | 天天尻 | 午夜在线视频免费 | 6680新视觉电影免费观看 | 午夜精品一区二区三区免费视频 | 末路1997全集免费观看完整版 | 国产在线xx | 欧美色香蕉 | 99精品久久久久久中文字幕 | 影音先锋色小姐 | 人人插人人爽 | 少妇特殊按摩高潮惨叫无码 | 乱子伦一区二区 | 天天干干天天 | 黄视频免费在线看 | 国产精品19乱码一区二区三区 | www.精品国产 | 久久艹久久 | 色婷婷亚洲 | 五月婷婷激情综合 | 先锋影音亚洲 | 狠狠欧美| 色伊伊 | 香蕉视频黄色在线观看 | 国产精品一级 | 另类毛片| avwww. | 亚洲美女性生活 | 少妇精品视频 | 无码人妻久久一区二区三区不卡 | 国产第一页在线播放 | 成人免费片 | 色悠悠在线视频 | 五月天久久久 | 男女啪啪毛片 | 日本在线一区二区 | 狠狠干狠狠操视频 | 日韩毛片免费看 | 日本不卡视频在线观看 | 黄色一及毛片 | 欧美三级a| 欧美肥老妇 | 日韩精品在线观看免费 | 一本到视频 | 少妇免费视频 | 国产在线xx| 国产精品久久久无码一区 | 国产一区二区三区在线看 | 人妖干美女 | aaaaav| 亚洲色欧美 | 国产精品普通话 | 国产乱淫av片| 国产在线观看一区 | 亚洲国产精品成人综合在线 | 精品久久人人 | 欧美手机看片 | 精品人妻人人做人人爽夜夜爽 | 日韩精品高清在线观看 | 色女人综合 | 六月婷婷久久 | 亚洲视频 一区 | 神秘马戏团在线观看免费高清中文 | xxxxx在线观看 | 精品国产一区二区三区性色av | 天天摸天天碰 |