Q:

Error java at array.Array

Quiero conseguir la moda de un array, pero el codigo me tira un error y no se a que se debe, me estoy volviendo loco. La opcion mas facil seria cambiar el codigo pero este es el que mas entiendo, y ademas hay otras cosas que pense por mi propia cuenta y por eso insisto con este.
package testArray;

import java.util.Arrays;

import array.Array;
public class testArray {

    public static void main(String[] args) {
        
        int arreglo[] = {1,3,3,4,4,1,1,1,3,5};
        
        Array array1 = new Array(arreglo);
        
        
        
        
        System.out.println("La moda es:"+array1.traerModa()); -----------LINEA DE ERROR--------------

        
    

    }

}

Mi clase es la siguiente
package array;

import java.util.Arrays;

public class Array {
    private int vector [] ;
    
    public Array(int [] vector) {
        this.vector = new int[vector.length];
        this.vector=vector;
        
    }

    public int traerElMayor(int v[]){
        int mayor=vector[0];
        for(int i=0;i<vector.length;i++) {
            if(vector[i]>mayor) {
                mayor=vector[i];
            }
        }
        return mayor;
    }
   public int traerModa() {
        int contador [] = new int[4];
        
        for(int i=0 ;i<vector.length;i++)
        {   
            contador[vector[i]] +=1;        -----------ACA ME CORTA LA EJECUCION--------------
        }
        int moda = traerElMayor(contador);
        return moda;
    
        
    }

}

El error que me arroja es el siguiente, anteriormente en otro metodo tambien me tiraba el mismo error, pero se soluciono solo!!
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
    at array.Array.traerModa(Array.java:118)
    at testArray.testArray.main(testArray.java:20)

A:

Tu contador es un array de  4 elementos, pero tu Array1 tiene un elemento con valor 5.
Así que intentas incrementar  contador[5]   y se queja de que es "OutOfBounds", es decir que el indice de ese array es demasiado grande.

