Remover itens duplicados de uma lista

Preciso de um programa que receba palavras e diga quantos anagramas ela possui, e abaixo exibir todos eles. Porém o meu algoritmo está gerando anagramas repetidos. Como retirá-los?

"import java.util.Scanner;
class Lista {
	String s;
	private String[] array;
	private int n;


	//Construtor
	public Lista () {
		this(10000);
	}

	//Construtor da classe
	public Lista (int tamanho){
		array = new String[tamanho];
		n = 0;
	}

	public int getN () {
	return this.n;
}



	//Metodo que insere um elemento na ultima posicao da lista
	public void inserirFim(String s) {
		array[n] = s;
		n++;
}
	

	public void ordenar (Lista lista) {
		String temp;
		for (int i=0 ; i < (n-1); i++) {
			//Antes de comparar atribui-se o valor atual de i ao menor
			int menor = i;
			//Comparando com os outros valores do vetor
			for (int j = (i+1); j < n; j++){ 
				if (array[menor].compareTo(array[j]) > 0) 
					menor = j;
			
	}
			//Trocando os valores menor e maior
			temp = array[i];
			array[i] = array[menor];
			array[menor] = temp;
		}
	}	

	
	//Metodo para imprimir a lista na tela
	public void Imprimir(){

		for(int i=0; i<n; i++){
			System.out.println(array[i]);
		}
	}
}

class Anagrama{
 
	static int contador = 0;
    public static void anagramas(Lista lista,String primeiro,String cadeia) {
	if (cadeia.length()==1){
	contador++;
	lista.inserirFim(cadeia);
}
    	if(cadeia.length()==2)
    	{
    		contador = contador+2;
    		lista.inserirFim(primeiro+cadeia.charAt(1)+""+cadeia.charAt(0));
    		lista.inserirFim(primeiro+cadeia.charAt(0)+""+cadeia.charAt(1));
    	}
    	else{
    		for (int i=0;i<cadeia.length();i++) {
    		   		anagramas(lista, primeiro+cadeia.charAt(i),tirarLetra(cadeia,i));
    		}
    	}
    }

    public static String tirarLetra(String cadeia,int i)
    {
    	if(i==0)
    	{
    		return cadeia.substring(i+1,cadeia.length());
    	}
    	else
    	{
    		if(i==cadeia.length())
    		{
    			return cadeia.substring(0,cadeia.length()-1);
    		}
    		else
    		{
    			return cadeia.substring(0,i)+cadeia.substring(i+1,cadeia.length());
    		}
    	}
    }

    public static void main(String args[]) {
    	String[] entrada = new String[1000];
		String linha;
		int numEntrada = 0;
		int numerodecpf;
		Scanner ler = new Scanner(System.in);


		//Leitura da entrada padrao
		numerodecpf = ler.nextInt();
		for (int i = 0; i < numerodecpf; i++) {
		contador = 0;
		Lista lista = new Lista();
		entrada[i] = ler.next();
		anagramas(lista,"",entrada[i]);
		System.out.println(contador);
		lista.ordenar(lista);
		lista.Imprimir();

					}	
   
    }
}"

Você pode sobrescrever o equals(), iterar sobre a lista de anagramas já feitos e ver se existe algum igual por exemplo: anagrama.equals(outroAnagrama);
Receba um anagrama no parâmetro do equals(), lembrando que anagrama deve ter um atributo para isso,
nome por exemplo e ai você compara:
Exemplo 1 monta o equals, Exemplo 2 usa iterando na lista

O equals() deve receber a notação @override acima, para ser sobrescrito

Você pode usar um Set e sobreescrever o metodo equals na classe Anagrama como na resposta do @rodrigo1208 ao invés de criar a sua própria classe Lista, mas caso você queira criar sua própria classe sugiro que você estude Estrutura de Dados. Tem um curso muito bom disso no Alura alura.com.br.

Como o trabalho nem era pra matérias de Algoritmos, e sim pra Matemática Discreta, resolvi de um modo mais “simples”. Criei o método remover em qualquer posição na lista, e criei um método que verificava se existiam Strings iguais, e se existisse, removia.

 //Metodo que remove um elemento de uma posicao especifica da lista e move os outros para o inicio da mesma
	public void remover (int pos) {
		String resp = array[pos];
		n--;

		for(int i = pos; i < n; i++){
			array[i] = array[i+1];
		}
	}

public static void removerIguais(Lista lista) {
	for (int i=0 ; i < (lista.getN()-1); i++) {
			
			int pos = i;
			//Comparando com os outros valores do vetor
			for (int j = (i+1); j < lista.getN(); j++){ 
				if (lista.getArray()[pos].compareTo(lista.getArray()[j]) == 0) {
					lista.remover(pos);
					contador--;
					j--;

}

Já enviei e deu 100% de acerto, obrigado pela ajuda