Problemas para percorrer todos os anos e retornar o valor

Bom dia a todos!!

Estou com um probleminha que não sei em que ponto estou errando, veja:

Tenho que percorrer os anos , iniciando do ano do estudo e exibir todos os valores de vazão para cada a mês, ou seja:
Preciso pegar o período por exemplo : 07/1999 até 06/2000 e exibir na tela as vazões referente a este período.

No meu código já montei com o Calendar este período e está sendo pego corretamente. Percorro esta lista e vou exibindo as vazões. O problema ocorre quando chega no mês 12/1999 , ocorre o seguinte erro:
04/04/2018 10:38:17 [ERRO_EXECUCAO] Thread Name : AWT-EventQueue-0
04/04/2018 10:38:17 [ERRO_EXECUCAO] Descrição Mensagem : java.lang.ArrayIndexOutOfBoundsException: 12

Segue abaixo o trecho do meu código:

int[] valores = new int[12];

        for (int i = 0; i < valores.length; i++) {
            valores[i] = 0;
      
        }
       
        for (Vazao vazaoDoAno : listaVazoesPorAno) {

            DateFormat df = new SimpleDateFormat("MM/yyyy");

            Calendar calendarInicio = Calendar.getInstance();
            calendarInicio.set(Calendar.MONTH, mesInicio - 1);
            calendarInicio.set(Calendar.YEAR, ano);
          
            Calendar calendarFinal = Calendar.getInstance();
            calendarFinal.set(Calendar.MONTH, mesInicio - 2);
            calendarFinal.set(Calendar.YEAR, ano + 1);

            List<String> lista = new ArrayList<String>();
            for (Calendar c = (Calendar) calendarInicio.clone(); c.compareTo(calendarFinal) <= 0; c.add(Calendar.MONTH, Calendar.YEAR)) {

                lista.add(df.format(c.getTime()));
            }

        
            for (int i = 0; i < lista.size(); i++) {

                String mesAno = lista.get(i);
                String[] split = mesAno.split("/");
                int mes = Integer.parseInt(split[0]);
         
                ParametrosColuna colunaMes = colunasMeses.get(mes - 1);
                Integer vazaoMes = (Integer) vazaoDoAno.getValorAtributo(colunaMes.getNomeAtributoEntidade());
                   valores[mes] += vazaoMes; // O erro ocorre nesta linha quando o mês é 12
                                

            }
            

        }

Se alguém puder me ajudar ficarei muito grata.
Flavia

O Calendar trabalha com meses de 0 a 11, onde 0 é janeiro e 11 é dezembro.
Por isso o 12 lança essa exceção.

Ok Darlan. Neste caso terei que trabalhar com meu array até 11. Obrigada.
Flavia

Tentei mudando o meu array para 11 , mas desta forma deu erro para o 11. Veja:

04/04/2018 11:48:43 [ERRO_EXECUCAO] Descrição Mensagem : java.lang.ArrayIndexOutOfBoundsException: 11

Não estou sabendo o que fazer, pois tenho que pegar nesta ordem: 07/1999;08/1999;09/1999;10/1999;11/1999;12/1999; 01/2000; 02/2000;03/2000;04/2000;05/2000;06/2000

Quando chega em 12/1999 ele muda para 01/2000 , neste caso meu codigo não atenderia. Estou meio perdida se alguém puder me ajudar.

Consegui resolver. Obrigada Darlan pela dica.