Poker : como verificar royal, quadra, full hand,sequencia, trinca, dois pares e par

e aí pessoal tenho um array de cartas como posso fazer para ferificar esses tipos de jogo no poker se alguem puder ajudar está aí a classe carta e a classe baralho.

package Core;

public class Card {

private String face;//face da carta
private String suit;//naipe da carta

//inicializa a face e o naipe da carta
public Card( String cardFace, String cardSuit ) {
    face = cardFace;
    suit = cardSuit;
}

//construtor que nao faz nada, para criar um objeto sem usar parametros no construtor
public Card () {
    
}

//mostra a  descricao de uma carta
public String showCard() {
    return face + " of " + suit;
}

//obtem a face de uma carta
public String getFace() {
    return face;
}

//obtem o naipe de uma carta
public String getSuit() {
    return suit;
}

}


package Core;
import java.util.Random;

public class DeckOfCards {
private Card deck[];
private int currentCard;
private final int NUMBER_OF_CARDS = 32;
private Random randomNumbers;

//contrutor de DeckOfCards
public DeckOfCards() {
    String faces[] = {"Seven","Eight","Nine","Ten","Jack","Queen","King","Ace"};
    String suits[] =  {"Hearts","Diamonds","Clubs","Spades"};
    
    deck = new Card[NUMBER_OF_CARDS];//cria um array de Card
    currentCard = 0;//primeira carta a ser distribuida sera deck[0]
    randomNumbers = new Random();//cria um objeto de Random
    
    //preenche o baralho com objetos do tipo Card
    for ( int count = 0; count < deck.length; count++ )
        deck[count] = new Card (faces[count % 8 ], suits[count / 8] );
}

//embaralha as cartas
public void shuffle() {
    currentCard = 0;//depois de embaralhar a distribuicao deve comecar em deck[0]
    for ( int first = 0; first < deck.length; first++ ) {
        int second = randomNumbers.nextInt(NUMBER_OF_CARDS);
        //compara carta atual com carta aleatoriamente selecionada
        Card temp = deck[first];//carta temporaria vai ser a carta na posicao first
        deck[first] = deck[second];//a primeira carta vai ser a carta na posicao second
        deck[second] = temp;//carta second vai ser a carta temp (temp era a carta que estava em first)
    }
}

//distribui uma carta
public Card dealCard() {
    if ( currentCard < deck.length )//se todas as cartas nao estiverem sido distribuidas
        return deck[currentCard++];//retorna a carta atual depois incrementa
    return null;//retorna null para indicar que todas as cartas foram distribuidas
}

}

Depende do que você está fazendo.

Se é um trabalho para faculdade crie uma classe para cada combinação e faça-a receber o baralho e checar se a combinação foi feita.

Se é algo mais profissional pesquise sobre o pattern Specification (Eric Evans).

Seja qual for, preste atenção á nomenclatura. Nomes de pacotes possuem apenas letras minusculas.

gostaria dos codigos…para verificar o tipo de jogo