1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        List集合隨機(jī)排序引發(fā)的思考

        共 2250字,需瀏覽 5分鐘

         ·

        2021-06-12 06:33

        前言

        最近一直再分享手寫web服務(wù)器的內(nèi)容,感覺能分享的東西差不多都已經(jīng)分享了,剩下的內(nèi)容要么是短期沒法出成果的,要么是需要花時間去優(yōu)化的,另外這段時間確實(shí)太卷了,所以本著勞逸結(jié)合的想法,我們今天分享個小知識點(diǎn),而且未來幾天也打算這么搞,畢竟好的內(nèi)容是需要孕育、醞釀,需要慢慢生發(fā)的。

        隨機(jī)算法

        今天的內(nèi)容分其實(shí)就是給大家介紹下Collectionsshuffle方法,這個單詞的中文含義是洗牌,所以這個方法的作用就是打亂list集合中元素的順序,達(dá)到亂序的效果。

        為什么要講這個?最大的原因是,對于隨機(jī)散列這塊的認(rèn)識太淺顯了,知識面也太窄,只知道Random方法,其他的一概不了解,散列算法也只是聽說過名字,但是在實(shí)際開發(fā)中,我們是有可能遇到各種隨機(jī)應(yīng)用場景的,比如隨機(jī)紅包,隨機(jī)試題,所以掌握一些常用的隨機(jī)算法是很有必要的。

        認(rèn)識到這個方法是昨天在看公司舊代碼的時候,有個接口就是用來隨機(jī)抽題的,沒看這個方法之前,我以為隨機(jī)抽題的算法就是把數(shù)據(jù)拿出來放進(jìn)集合,然后循環(huán)生成隨機(jī)數(shù),按隨機(jī)數(shù)去獲取集合中的元素,連我之前說要實(shí)現(xiàn)自動生成筆記卡片,隨機(jī)圖片那里可以這么考慮的。

        直到昨天到了shuffle方法,感覺對隨機(jī)解決方案也有了更深入的認(rèn)知。

        下面我們看一段代碼:

        public static void main(String[] args) {
                List<Integer> longList = Lists.newArrayList();
                for (int i = 0; i < 10; i++) {
                    longList.add(i);
                }
                System.out.println("隨機(jī)排序前:"+ longList);
                long startTime = System.currentTimeMillis();
                Collections.shuffle(longList);
                long useTime = System.currentTimeMillis() - startTime;
                System.out.println("用時:" + useTime);
                System.out.println("隨機(jī)排序后:"+ longList);
            }

        這段代碼的演示了,shuffle的用法,我們只需要講list集合傳入即可,運(yùn)行之后list就會變成一個隨機(jī)排列的list:

        多次運(yùn)行,你會發(fā)現(xiàn)每次的順序都是不一樣的,當(dāng)然對于一個長度確定的集合,它的排序方式的數(shù)量是確定的,但是我們大部分的應(yīng)用場景都是允許重復(fù)的。

        擴(kuò)展

        下來,我們來說下簡單的應(yīng)用場景。就拿隨機(jī)試題考試來說,考過駕照的小伙伴都知道,我們在考科目一科目四的時候,題目和選項(xiàng)的順序都是隨機(jī)排列的,那么對于這種應(yīng)用場景,我們可以這樣來做:

        • 從數(shù)據(jù)庫中查出所有試題,通過shuffle打亂試題順序,然后從亂序的試題中,截取我們需要的試題數(shù)量即可,這樣返回的試題題目就是隨機(jī)的
        • 如果是選擇題,我們也可以通過同樣的方法對選項(xiàng)進(jìn)行操作,這樣兩個人就算抽到同樣的試題,題目的選項(xiàng)也是不一樣的

        再比如我隨機(jī)圖片的需求,我可以查出所有圖片,對結(jié)果進(jìn)行隨機(jī)排序,然后拿出集合的第一個元素即可

        總結(jié)

        今天的內(nèi)容,只介紹了一個隨機(jī)排序方法,代碼比較少,但是我覺得意義挺大的,作為一個開發(fā)人員不僅要埋頭寫代碼,更重要的是要去廣泛涉獵各種知識,看各種實(shí)現(xiàn)方式,這些看似不起眼的習(xí)慣,一定程度上決定了你為了的高度。

        任何行業(yè),都是這樣,思維和眼界,才是決定你職業(yè)方向和深度的關(guān)鍵,我們一起共勉,加油吧!

        - END -


        瀏覽 79
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            操逼阁 | 91们嫩草伦理 | 日韩男女在线 | 欧美后门菊门交3p、 | 办公室激情吃奶吻胸视频 | 俺去啦俺去也 | 免费观看裸体 | 激情久久五月 | 午夜无码成人福利 | 蜜桃91精品秘 成人取精库 |