Como gerar numeros aleatorios sem repetição em java Random

public class NumerosAleatrorios{
    
    public static void main(String[] args){

        int numero;
        int[] num = new int[24];
        Random r = new Random(); //Alterar o numero para gerar com a semente
        for(int i=0; i<num.length; i++){
             numero = r.nextInt(25) + 1;
             for(int j=0; j<num.length; j++){
                   if(numero == num[j] && j != i){
                         numero = r.nextInt(25) + 1;
                         j--;
                   }else{
                        num[i] = numero;
                   }
             }
        }

        //Apresentar na tela o resultado
        for(int i=0; i<num.length; i++){
             System.out.print(num[i]+"  ");
        }            
    }        
}

Saida:

17 4 2 20 7 23 15 11 19 24 25 12 9 14 10 6 4 3 22 16 20 7 8 13

Ainda ta saindo repetido, alguém pode me ajudar?


Tem que conferir antes de inserir no Array:

int numero = 0;
int controle = 0;
int find = 0;
int c, i = 0;        
int[] num = new int[24];        
Random r = new Random(); 

//contruindo o array sem repetição
for(i = 0; i < num.length; i++)
{
	find = r.nextInt(25) + 1;
	if ( i == 0 ) {
		num[i] = find;
	} else {
		c = 0;
		while (c < i)
		{
			if (num[c] == find)
			{
				find = r.nextInt(25) + 1;
				c = 0;
			} else {                   
				c++;
			}
		}
		num[i] = find;                
	}
}

/* ordernação
for(i = 0; i < num.length ; i++)
	for(int j = i + 1; j < num.length ; j++)
	{
		if (num[i] > num[j])
		{
			int numt = num[i];
			num[i] = num[j];
			num[j] = numt;
		}
	}
*/

//Apresentar na tela o resultado
for(i = 0; i < num.length ; i++)
{
	System.out.print(num[i] + "  ");
}

DEMO

Entendi, muito obrigado!!