zoukankan      html  css  js  c++  java
  • Collections中的shuffle()方法

    Collections中的shuffle()方法
    shuffle() 是 Collections 中的静态方法 ,它用于将一个 list 集合中的元素顺序进行打乱 ,类似于洗牌的过程,而且shuffle的

    英文含义就是 “洗牌” 。shuffle()方法常用于类似 洗牌要打乱顺序 的问题。

    eg: 模拟洗牌

    import java.util.*;

    public class Card {
         public static enum Face {
               红心, 方块 , 草花, 黑桃
         };

         public static enum Deck {
               one, two, three, four, five, six, seven, eight, nine, ten , eleven, tweleve, thirteen
         };

         /**
          *
          * 私有变量将从枚举Face, Deck中获得值,那么其返回值应该定义成枚举( enum)吗? 是的,但是需要使用Face face, Deck
          * deck;
          *
          */
         private Face face;
         private Deck deck;

         public Card(Face faceVal, Deck deckVal) {
               face = faceVal;
               deck = deckVal;
         }

         public String toString() {
               // return String.format("%s of %s", deck, face);
               return String. format(face + " " + deck);
         }

         public static void main(String argc[]) {
              Card card[] = new Card[52];
               int counter = 0;

               for (Card.Face faceVal : Card.Face. values()) {
                   for (Card.Deck deckVal : Card.Deck.values()) {
                       card[counter++] = new Card(faceVal, deckVal);
                  }
              }

              List<Card> list = Arrays. asList(card); // 将数组转化成collection

              Collections. shuffle(list); // 利用集合(collections)的静态方法,打乱list集合顺序
              Card[] card2 = new Card[52]; // 创建新数组
              list.toArray(card2); // 将collection转换成数组,以便输出

               for (Card c : card2) {
                  System. out.println(c + " ");
              }
         }
    }
    输出结果:
    黑桃 two
    草花 ten
    草花 nine
    草花 seven
    黑桃 eight
    方块 one
    黑桃 tweleve
    黑桃 thirteen
    草花 one
    黑桃 nine
    黑桃 six
    草花 six
    黑桃 four
    草花 eight
    红心 nine
    红心 one
    草花 four
    红心 five
    红心 tweleve
    黑桃 eleven
    黑桃 three
    方块 ten
    方块 five
    方块 four
    红心 eight
    红心 four
    草花 thirteen
    红心 thirteen
    方块 two
    方块 six
    草花 eleven
    红心 six
    草花 three
    红心 two
    黑桃 one
    方块 nine
    红心 eleven
    红心 ten
    红心 three
    方块 tweleve
    草花 five
    方块 eleven
    黑桃 five
    黑桃 seven
    方块 eight
    黑桃 ten
    草花 two
    方块 seven
    草花 tweleve
    红心 seven
    方块 three
    方块 thirteen 




  • 相关阅读:
    并行 并发 概念
    为什么C++编译器不能支持对模板的分离式编译_刘未鹏
    并发编程的15 条建议
    VS2005 C++ str.Format 编译错误
    PPT 去除排练计时
    VS2005中 depends.exe 在哪里
    《A wavelet tour of signal processing》前言摘录
    Windows Forms 2.0 Programming 读书笔记Hello, Windows Forms
    VS2005 宽字符 unicode字符集和多字节字符集
    Windows Forms 2.0 Programming 读书笔记Hello, Windows Forms(2)
  • 原文地址:https://www.cnblogs.com/ZhangJinkun/p/7bd49981490352cdde5e81a29322dd63.html
Copyright © 2011-2022 走看看