Hola Tengo clase de tarjeta ... En otra clase, creo un arrayList de objetos de tarjeta. ¿Cómo haría para ordenar el arrayList basado en el valor de la tarjeta? El as es el valor más bajo de la carta y el rey es el más alto.Java Objeto de ordenación en ArrayList
A, 2,3,4,5,6,7,8,9, T, J, Q, K
public class Card {
char rank, suit;
public Card(char rank, char suit){
this.rank = rank;
this.suit = suit;
}
public void setCard(char rank, char suit){
this.rank = rank;
this.suit = suit;
}
public char getRank(){
return rank;
}
public char getSuit(){
return suit;
}
public void setRank(char rank){
this.rank = rank;
}
public void setSuit(char suit){
this.suit = suit;
}
public String toString(){
String str = "";
str += this.getRank();
str += this.getSuit();
return str;
}
public boolean equals(Object obj){
Card card = (Card) obj;
if(this.rank == card.getRank() && this.suit == card.getSuit()){
return true;
}
return false;
}
public boolean isValidCard(Card card){
char s = card.getSuit();
char r = card.getRank();
if(s=='H' || s=='S' || s=='D' || s=='C'){
if(r=='A' || r=='2' || r=='3' || r=='4' || r=='5' || r=='6' || r=='7' ||
r=='8' || r=='9' || r=='T' || r=='J' || r=='Q' || r=='K'){
return true;
}
}
return false;
}
public boolean allowedInHigherPiles(Card card, Game game, int pile){
if(pile>=5 && game.getPile(pile).cards.size()==0){
if(card.getRank()!='K')
return false;
}
return true;
}
}
Desde una baraja de cartas tiene un orden natural, yo recomendaría usar la interfaz Comparable más de una clase Comparador independiente. Las clases de comparación deben usarse cuando un objeto no tiene un orden natural, como una clase de calzado. Diferentes personas clasifican sus zapatos de diferentes maneras (por color, por tamaño, por precio). :-) –
Bjorn: Estoy de acuerdo, excepto que el rol del as cambia en muchos juegos (por ejemplo, BJ y póker), así que tendría cuidado de agregar semántica a las cartas. – Uri