<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 2250字,需瀏覽 5分鐘

           ·

          2021-06-12 06:33

          前言

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

          隨機(jī)算法

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

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

          認(rèn)識到這個(gè)方法是昨天在看公司舊代碼的時(shí)候,有個(gè)接口就是用來隨機(jī)抽題的,沒看這個(gè)方法之前,我以為隨機(jī)抽題的算法就是把數(shù)據(jù)拿出來放進(jìn)集合,然后循環(huán)生成隨機(jī)數(shù),按隨機(jī)數(shù)去獲取集合中的元素,連我之前說要實(shí)現(xiàn)自動(dòng)生成筆記卡片,隨機(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("用時(shí):" + useTime);
                  System.out.println("隨機(jī)排序后:"+ longList);
              }

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

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

          擴(kuò)展

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

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

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

          總結(jié)

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

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

          - END -


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

          手機(jī)掃一掃分享

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

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  99视频网站 | 操逼操逼视频 | 色综合999 | 青青草社区在线 | 欧美黄色精品 |