Gravar titulos em ordem alfabetica (lista encadeada)

1 resposta
java
Leonardo_Susin

Estou fazendo um trabalho com listas, e preciso que tudo que for colocado nela seja gravado em ordem alfabética, queria não utilizar o metodo “Arrays.sort(Titulos)”,

public class RegistraEbook {


String[] Titulos = new String[1000];
private Ebooks[] ebooks = new Ebooks[1000];
private Autores[] autores = new Autores[1000];
private Editora[] editora = new Editora[1000];
private int contEbooks = 0 ;
String ebookCad = null;
int cont = 0;

	
	public void menuCadastro() {
		Scanner leitor = new Scanner(System.in);
		System.out.println("3 - Cadastrar titulos");
		System.out.println("4 - Mostrar titulos");
		

		int op = leitor.nextInt();
		
		while(op != 0) {
			
			switch(op)
			{
			
			case 3:
				
				System.out.println("Titulo: ");
				leitor.nextLine();
				String titulo = leitor.nextLine();
				Titulos[cont] = titulo;
				cont++;	
			
				
				break;
				
					 
				
				
			case 4:
				for (int i = 0; i < cont; i++) {
					System.out.println(Titulos[i]);
					
				}
				break;

1 Resposta

hugokotsubo

Se não quer ordenar, então troque o array por um TreeSet, que já insere os elementos na ordem correta:

Set<String> titulos = new TreeSet<String>();

// adiciona um título
String titulo = leitor.nextLine();
titulos.add(titulo);

O método add de um TreeSet já adiciona o elemento na posição correta, levando em conta a ordem entre os demais elementos já existentes.

Ainda tem a vantagem de aumentar o tamanho conforme a necessidade, assim você não precisa criar um array com mil posições (se precisar de menos, será desperdício, e se precisar de mais, terá que criar outro array maior).

Também sugiro que siga as convenções de nomenclatura da linguagem, que prefere nomes de variáveis começando com letra minúscula.

Criado 19 de junho de 2021
Ultima resposta 20 de jun. de 2021
Respostas 1
Participantes 2