Mega sena - Loteria

Preciso fazer com que três jogadores insiram 6 números não repetidos e no final do sorteio seja mostrado o vencedor e a quantidade de acertos feitos por cada um deles, porém não estou conseguindo desenvolver essa logica, alguém pode ajudar?

/**
 * @param args
 */


public static void main(String[] args) {
    

    
    System.out.println("****************************************************");
System.out.println("             MEGA SENA - Turma TADS - 2016          ");
    System.out.println("****************************************************\n");
    
    Scanner input = new Scanner(System.in);
          
    int count = 0;
    System.out.println("***Digite sua aposta contendo 6 números de 01 a 60***\n");
    System.out.println("1º Número");
    int Jogada1 = input.nextInt();
    System.out.println("2º Número");
    int Jogada2 = input.nextInt();
    System.out.println("3º Número");
    int Jogada3 = input.nextInt();
    System.out.println("4º Número");
    int Jogada4 = input.nextInt();
    System.out.println("5º Número");
    int Jogada5 = input.nextInt();
    System.out.println("6º Número");
    int Jogada6 = input.nextInt();
    //int[][] matriz = new int[X][6] //Para aumentar o numero de resultados mude o X pra o valor desejado
	int[][] matriz = new int[3000][6];
    //for para preencher a matriz
    for (int[] matriz1 : matriz) {
        Set<Integer> numeros = new HashSet<>();
        Random random = new Random();
        //Sortear 6 dezenas
        while (numeros.size() < 6) {
            numeros.add(random.nextInt((60 - 1) + 1) + 1);
        }
        count = 0;
        for (Integer i : numeros) {
            matriz1[count] = i;
            count ++;
        }
        count = 0;
    }
	
	//lista com 60 linhas com o valor 0
	Map <Integer,Integer> map = new HashMap<>();
	for(int i = 0; i <= 60; i++){
		map.put(i, 0);
	}
	
	//Pesquisando e acrescentando valor do map de acordo com a chave.
	
	int [] sorteio = new int[6];
	
	String sorteioAux = "";
	String sorteioOrdenadoAux = "";
	int countLinha = 0;
	
	for (int l = 0; l <  matriz.length; l++){
		
	countLinha ++;
		
	for (int c = 0; c < 6; c++){
			//get na chave do map
                count = map.get(matriz[l][c]);
			//put na chave do map incrementando o valor da chave.
                map.put(matriz[l][c],count + 1);
			//Adicionando a matriz em um array para ser ordenado
                sorteio[c] = matriz[l][c];
                }
		
		//Ordenando resultados 
                Arrays.sort(sorteio);
		//Recebendo resultado em um array ordenado
                count = 0;
                for (int num : sorteio) {
		sorteioAux = sorteioAux + String.format("%02d", num) + "-";
		sorteio[count] = 0;
                }
		
                sorteioAux = sorteioAux.substring(0, sorteioAux.length() - 1);
		
                count = 0;
                for (int c = 0; c < 6; c++){
		sorteioOrdenadoAux = sorteioOrdenadoAux +  String.format("%02d", matriz[l][c]) + "-";
		sorteio[count] = 0;
		}
                sorteioOrdenadoAux = sorteioOrdenadoAux.substring(0, sorteioOrdenadoAux.length() - 1);
		
	System.out.println("[Sorteio "+ String.format("%04d", l + 1) +"] = " + sorteioAux + " (" + sorteioOrdenadoAux + ")");
	sorteioAux = "";
	sorteioOrdenadoAux = "";
	}
            System.out.println("");
            System.out.println("***********************************************");
	System.out.println("         Números repetidos por sorteio         ");
            System.out.println("***********************************************");
	//Imprimindo map com resultados da contagem
	for(int i = 1; i <= 60; i++){
                    
	System.out.println("Numero " + String.format("%02d", i) + " repetiu : " + String.format("%02d", map.get(i))+ " vezes");
	}
	
	//Jogando em um set Array para eliminar as contagens repetidas
	Set<Integer> setDezenasSorteadas = new HashSet<>();
	for(int i = 0; i < map.size() ; i++){
		setDezenasSorteadas.add(map.get(i));
	}
	
	//jogando em um array para poder ordenar a contagem 
	int[] arrayDezenasSorteadas = new int[setDezenasSorteadas.size()];
	count = 0;
	for(Integer i : setDezenasSorteadas){
		arrayDezenasSorteadas[count] = i;
		count ++;
	}
	
	//ordenando o array
	Arrays.sort(arrayDezenasSorteadas);
	int auxNumero = 0;
	for(int i : arrayDezenasSorteadas){
		if(auxNumero < i) {
			auxNumero = i;
		}
	}
	System.out.println("");
	for(int i = 0; i < map.size() ; i++){
		if(map.get(i) == auxNumero){
            System.out.println("***********************************************");
	System.out.println("   O Número " + i + " foi o que mais repetiu " + auxNumero + " vezes");
            System.out.println("***********************************************");
			break;
		}
	}
            
            System.out.println("");
            
	System.out.println("***************************************");
            System.out.println("***                                ****");
            System.out.println("***    Duplas que mais saíram      ****");
            System.out.println("***                                ****");
            System.out.println("***************************************");
            
	HashMap<String, Integer> numerosRepetidos = new HashMap<>(); 
	
            int contadorRepetidos = 1;
            for (int[] sorteioAtual : matriz) {
                for (int j=0; j < 6; j++){
                    for (int k=j+1; k < 6; k++){
                        String dupla = sorteioAtual[j] + " e " + sorteioAtual[k];
                
                    if (numerosRepetidos.containsKey(dupla)){
                        numerosRepetidos.replace(dupla, ++contadorRepetidos);
                    }else{
                        numerosRepetidos.put(dupla, 1);
                    }
                }
            }
            contadorRepetidos = 1;
            }
	
	Object[] a = numerosRepetidos.entrySet().toArray();
	Arrays.sort(a, (Object o1, Object o2) -> ((Map.Entry<String, Integer>) o2).getValue()
                    .compareTo(((Map.Entry<String, Integer>) o1).getValue()));
	int contadorVezes = 0;
	for (Object e : a) {
		contadorVezes++;
	    System.out.println(((Map.Entry<String, Integer>) e).getKey() + " Saíram: "
	            + ((Map.Entry<String, Integer>) e).getValue() + " vezes");
	    if (contadorVezes == 15){
	    	break;
	    }
	}
}

Recomendo que vc faça por partes, e organize em métodos

exemplo:

public static void imprimirIntroducao() {
  System.out.println("****************************************************");
  System.out.println("             MEGA SENA - Turma TADS - 2016          ");
  System.out.println("****************************************************\n");
}

public static int[] lerJogadas() {
  int[] jogadas = new int[6];
  System.out.println("***Digite sua aposta contendo 6 números de 01 a 60***\n");
  System.out.println("1º Número");
  jogadas[0] = input.nextInt();
  System.out.println("2º Número");
  jogadas[1] = input.nextInt();
  System.out.println("3º Número");
  jogadas[2] = input.nextInt();
  System.out.println("4º Número");
  jogadas[3] = input.nextInt();
  System.out.println("5º Número");
  jogadas[4] = input.nextInt();
  System.out.println("6º Número");
  jogadas[5] = input.nextInt();
  return jogadas;
}

Pelo que entendi, são vários sorteios e o jogador aposta com os mesmos 6 números em todos os sorteios, então:

// exemplo

int[] qtdDeAcertos = new int[3000];
for (int i = 0; i < 3000; i++) {
  qtdDeAcertos[i] = 0;
  int[] resultado = matriz[i];
  // repete para cada jogada
  if (Arrays.binarySearch(Arrays.sort(resultado), Jogada1) >= 0) {
    qtdDeAcertos[i]++;
  }
  //
  if (qtdDeAcertos[i] == 6) {
    // venceu no sorteio i !!!
  }
}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
import java.util.Scanner;

public class teste {

    public static void main(String[] args) {

        System.out.println("****************************************************");
        System.out.println("             MEGA SENA - Turma TADS - 2016          ");
        System.out.println("****************************************************\n");

        List<int[]> lista = new ArrayList<>();
        for (int i = 0; i < 3; i++) { // define que sera para tres jogadores
            System.out.println("***Jogador Nº:" + (i + 1) + " Digite sua aposta contendo 6 números de 01 a 60***\n");
            lista.add(adicionarDadosJogador());
        }
        compararValores(lista, sortearOrdenarValores());

    }

    public static int[] adicionarDadosJogador() {
        int[] jogada = new int[6]; // 
        Scanner input = new Scanner(System.in);
        for (int i = 0; i < 6; i++) {
            System.out.println((i + 1) + "º Numero");
            int valor = input.nextInt();
            while (valor < 0 || valor >= 60) { // Isso serve para preencher novamente caso o valor n seja maior q 0 ou menor igual a q 60
                System.out.println((i + 1) + "º Numero"); // mensagem repete ate q seja validado
                valor = input.nextInt();
            }
            jogada[i] = valor; // adiciona o valor a jogada
        }
        Arrays.sort(jogada);
        return jogada;
    }

    public static int[] sortearOrdenarValores() {
        Random random = new Random();
        int[] resultado = new int[6];
        for (int i = 0; i < 6; i++) {
            int valor = random.nextInt(60);
            resultado[i] = valor;
        }
        Arrays.sort(resultado);
        return resultado;
    }

    public static void compararValores(List<int[]> jogadores, int[] resultado) {
        for (int i = 0; i < 3; i++) { // exemplo de GET do list
            int[] jogada = jogadores.get(i);
            System.out.println("Jogador" + (i + 1)+"   :"+Arrays.toString(jogada));
        }
        System.out.println("Resultado: "+Arrays.toString(resultado));
        // ... Aqui vc coloca o comparador
    }

}

Nos métodos q construí ele solicitara que o 3 jogadores preencham os valores. O resultado é gerado em seguida. Importante citar q coloquei um validador com o While no FOR, este validador garante q o valor digitado pelo jogador seja maior que 0 e menor igual a 60.
Não coloquei seu algoritmo de classificação pois achei confuso, e precisaria de detalhes de quais tipos de resultados podem ser adquiridos pelo sistema.

Não sei se você já aprendeu a criar métodos, se aprendeu, toda a logica fica melhor com eles. Caso não tenha aprendido e’ chato mesmo colocar tudo dentro do main.