Generame un codigo de programacion en java que permita realizar las funciones antes descritas
Lo siento pero desconozco cuales son las funciones antes descritas. Para poder ayudarte con tu pregunta necesito que me des más información.
La primera de las funciones consiste en la validación de un DNI en base a sus primeros 8 dígitos (parte numérica del DNI) y el último caracter, la operación consiste en dividir la parte numérica entre 23 y, utilizando el resto de la división, compara con el siguiente orden de letras de 0 a 22: T,R,W,A,G,M,Y,F,P,D,X,B,N,J,Z,S,Q,V,H,L,C,K,E
Aquí te muestro una posible solución en Java para validar un DNI:

public class DNI {
    private static final String[] letrasDNI = { T, R, W, A, G, M, Y, F, P, D, X, B, N, J, Z, S, Q, V, H, L, C, K, E };
    
    public static boolean isDNIValid(String dni) {
        if (dni == null || dni.length() != 9) {
            return false;
        }
        int numPart = Integer.parseInt(dni.substring(0, 8));
        int rest = numPart % 23;
        String letra = dni.substring(8);
        return letra.equals(letrasDNI[rest]);
    }
}

La función isDNIValid toma un string que representa el DNI y valida si es válido o no. Primero se comprueba si el string es nulo o tiene una longitud distinta a 9, en cuyo caso se devuelve false. Luego, se extrae la parte numérica del DNI y se divide entre 23. Se utiliza el resto de la división para determinar la letra correspondiente y se compara con la letra proporcionada en el string del DNI. Si la letra coincide, se devuelve true, en caso contrario, se devuelve false.