Skip to content

Commit 97da747

Browse files
authored
Create ListSortCards2.java
1 parent 05ce9cd commit 97da747

File tree

1 file changed

+92
-0
lines changed

1 file changed

+92
-0
lines changed

comparesort/ListSortCards2.java

+92
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
package com.zetcode;
2+
3+
import java.util.Comparator;
4+
import java.util.List;
5+
6+
// sorting a list of objects by implementing a Comparable and
7+
// internal compareTo method
8+
9+
class Card implements Comparable<Card> {
10+
11+
@Override
12+
public int compareTo(Card o) {
13+
14+
return Comparator.comparing(Card::getRank)
15+
.thenComparing(Card::getSuit)
16+
.compare(this, o);
17+
}
18+
19+
public enum Suit {
20+
CLUBS,
21+
DIAMONDS,
22+
HEARTS,
23+
SPADES
24+
}
25+
26+
public enum Rank {
27+
TWO,
28+
THREE,
29+
FOUR,
30+
FIVE,
31+
SIX,
32+
SEVEN,
33+
EIGHT,
34+
NINE,
35+
TEN,
36+
JACK,
37+
QUEEN,
38+
KING,
39+
ACE,
40+
}
41+
42+
private Suit suit;
43+
private Rank rank;
44+
45+
public Card(Rank rank, Suit suit) {
46+
47+
this.rank = rank;
48+
this.suit = suit;
49+
}
50+
51+
public Rank getRank() {
52+
return rank;
53+
}
54+
55+
public Suit getSuit() {
56+
return suit;
57+
}
58+
59+
public void showCard() {
60+
61+
rank = getRank();
62+
suit = getSuit();
63+
64+
System.out.println(rank + " of " + suit);
65+
}
66+
67+
@Override
68+
public String toString() {
69+
final StringBuilder sb = new StringBuilder("Card{");
70+
sb.append("suit=").append(suit);
71+
sb.append(", rank=").append(rank);
72+
sb.append('}');
73+
return sb.toString();
74+
}
75+
}
76+
77+
public class ListSortCards2 {
78+
79+
public static void main(String[] args) {
80+
81+
var cards = List.of(
82+
new Card(Card.Rank.KING, Card.Suit.DIAMONDS),
83+
new Card(Card.Rank.FIVE, Card.Suit.HEARTS),
84+
new Card(Card.Rank.ACE, Card.Suit.CLUBS),
85+
new Card(Card.Rank.NINE, Card.Suit.SPADES),
86+
new Card(Card.Rank.JACK, Card.Suit.SPADES),
87+
new Card(Card.Rank.JACK, Card.Suit.DIAMONDS));
88+
89+
var sorted = cards.stream().sorted().toList();
90+
sorted.forEach(System.out::println);
91+
}
92+
}

0 commit comments

Comments
 (0)