Como acessar um objeto específico dentro de um vetor, que por sua vez é objeto de um HashMap?

Olá a todos, comecei Java há pouco tempo pois é meu primeiro período da faculdade, portanto, vocês irão me ver com frequência.

A questão: Se trata de um corretor de provas múltipla escolha (a, b, c, d ou e), primeiro eu devo entrar com o gabarito da prova (eu usei um vetor para guardar isso), depois entrar com o números de alunos da turma, em seguida, o cartão resposta de cada aluno com seu número e suas respostas (para isso usei um laço “for” até atingir o número máximo de alunos, guardando as respostas de cada aluno em um vetor que é objeto de um HashMap, logo a key seria o número do aluno).

Minha dúvida: Conseguir comparar um elemento do vetor onde guardei o gabarito com um elemento em específico do vetor onde estão guardadas as respostas dos alunos, (lembrando que cada aluno tem um vetor e que cada key refere-se a um aluno diferente).

Ps: Um dos monitores me aconselhou a não usar HashMap para problemas como esse, mas eu achei ser um processo muito intuitivo, se possível alguém poderia dizer porque esse método não é aconselhado em problemas como esse? Desde já obrigado!

Segue o código abaixo (a partir do main):

public static void main(String[] args) {
        Scanner recebe = new Scanner(System.in);
        String[] gabarito = new String[10];
        String[] resposta = new String[10];
        HashMap<Integer, String[]> respostas = new HashMap<>();
        int qnt_turma, acertos = 0;
        
        System.out.println("Informe o cartão gabarito da prova na sequência de 1 a 10: ");
            for (int i = 0; i < gabarito.length; i++) {
                gabarito[i] = recebe.next();
            }
            
        System.out.println("Qual o número de alunos da turma?");
        qnt_turma = recebe.nextInt();
         
        for (int j = 1; j <= qnt_turma; j++) {
        System.out.println("Informe o cartão resposta do " + j  + "º aluno: ");
            for (int i = 0; i < resposta.length; i++) {
                resposta[i] = recebe.next();
            }
            respostas.put(j, resposta);
        }
        
       for (int j = 1; j <= qnt_turma; j++) {
           for (int i  = 0; i < resposta.length; i++) {
               /*aqui é minha dúvida, conseguir comparar um objeto do vetor gabarito[i] 
               com um objeto específico do vetor resposta, que está dentro de do HashMap respostas */
               if (/* ??????? */) {
                   acertos += 1;
               }   
           }
           
           System.out.println("O aluno " + j + " acertou: " + acertos + " questões.");
       }
       
    }
	if ((boolean) mapParametros.containsKey("listaLayoutPOSFormalizacao") == true) {
			
		List<LayoutPOSFormalizacao> listaLayoutPOSFormalizacao = (List<LayoutPOSFormalizacao>) mapParametros.get("listaLayoutPOSFormalizacao");
			
		for (LayoutPOSFormalizacao layoutPOSFormalizacao : listaLayoutPOSFormalizacao) {

Um pequeno exemplo como verificar se existente dentro de Um Map qualquer e como pegar o que está lá dentro esse é o um pequeno exemplo eu sinceramente gosto do HashMap principalmente quando precisamos retornar vários objetos.

Depende, pode usar sim o HashMap, mas do jeito que foi feito seria melhor o LinkedList ou ArrayList pois ficaria mais fácil trabalhar com os índices.

Mas se alterar para HashMap<String, String[]> onde a chave é o nome do aluno, ficaria bem melhor.

// Obtem as chaves do hashmap
Set<Integer> keys = respostas.keySet();

for (int i = 0; i < keys.size(); i++) {
    // obtem o indice do aluno
    Integer indice = keys.get(i);
    // obtem as respostas do aluno
    resposta = respostas.get(indice);
    // Comparacao
    /* .....TODO......  */
}

usando list

for (int i = 0; i < listaRespostas.size(); i++) {
    // obtem o indice do aluno (neste caso nao é o mesmo da lista)
    int indice = i + 1;
    // obtem as respostas do aluno
    resposta = listaRespostas.get(i);
    // Comparacao
    /* .....TODO......  */
}

A comparação deve ser feita com a resposta[] com o gabarito[]

para i de 1 a 10 repita
    se resposta[i] igual gabarito[i] entao
        /* ............. */
1 curtida