Nombre de occurences d'un objet dans une liste

OthK:

J'ai essayé de compter occurences d'un objet dans une liste, mais semble que ça ne fonctionne pas.

voici ma carte de classe:

public class Card {
    private int value;
    private String type;
    private String color; 
}

et ici, je suis en train de mettre en place une plate-forme de 104 cartes, contenant 2 occurences de chaque carte, mais ressemble à mon état est incorrect:

public static List<Card> InitializeDeck(){
        for(int i=0;i<104;i++){
            boolean isOk = true;
            while (isOk){
                int col = (int) (Math.floor(Math.random() * 2) + 1);
                if (col == 1) {
                    color = "Black";
                } else {
                    color = "Red";
                }

                value = (int) (Math.floor(Math.random() * 14));
                while (value == 0) {
                    value = (int) (Math.floor(Math.random() * 14));
                }

                int ty = (int) (Math.floor(Math.random() * 4));
                switch (ty) {
                    case 0:
                        type = "Spade";
                        break;
                    case 1:
                        type = "Heart";
                        break;
                    case 2:
                        type = "Diamond";
                        break;
                    case 3:
                        type = "Club";
                        break;
                }
                Card card = new Card(value, type, color);
                if(deck.isEmpty() || deck.stream().filter(line -> card.equals(line)).count()<=1){
                    deck.add(card);
                    isOk=false;
                }
            }

        }

        return deck;
    }

Je reçois un paquet de 104 cartes, mais avec parfois 4 occurences de la même carte, ou même pas un seul, les occurence conseils?

Thomas:

Je vais résumer les commentaires sur votre question un peu et donner un bref exemple de la façon dont vous souhaitez construire la plate-forme sans nombres aléatoires et à l'utilisation énumérations.

D'abord, nous définissons les énumérations:

enum Color {
  RED,
  BLACK;
}

enum CardType {
  SPADE, //as per Yassin's comments you'll probably want to define the type's color later on
  HEART, //you'd then use HEART(Color.RED) etc. - and provide the correct constructor
  DIAMOND,
  CLUB;
}

Et la Cardclasse:

class Card {
  private final int value;
  private final CardType type;
  private final Color color;

  //I'll omit the constructor, getters, equals and hashcode for simplicity, they should be straight forward
}

Et la construction de la plate-forme:

List<Card> deck = new ArrayList<>(208); //we're telling the list that we expect 208 elements

//build two cards for each combination and add them to the deck
for( int value = 1; value  <= 14; value++ ) {
  for( CardType type : CardType.values() ) {
    for( Color color : Color.values() ) {
      deck.add( new Card( value, type, color ) );
      deck.add( new Card( value, type, color ) );
    }
  }
}

//shuffle the deck
Collections.shuffle( deck );

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=209408&siteId=1
conseillé
Classement