Preciso fazer uma ordenação em java de uma lista, nessa ordem:
Prioridade, entrada, tamanho.
Problema é que quando a prioridade for a mesma, o próximo a verificar seria a entrada, segue abaixo meu o programa, não consigo fazer mais nada.
Obs: Preciso que a saida esteja em ordem.
packagefiladeprocessos;importjava.util.ArrayList;importjava.util.Collections;importjava.util.Scanner;publicclassFilaDeProcessos{publicstaticvoidmain(String[]args){Scannerescreva=newScanner(System.in);intN,entrada;ArrayListentrada1,tamanho,prioridade,processo;System.out.println("Quantos processos deseja armazenar? ");N=escreva.nextInt();entrada1=newArrayList();tamanho=newArrayList();prioridade=newArrayList();processo=newArrayList();for(inti=0;i<N;i++){processo.add(i+1);System.out.println("Qual a entrada do processo "+(i+1)+"?");entrada=escreva.nextInt();entrada1.add(entrada);System.out.println("Qual a prioridade do processo "+(i+1)+"?");entrada=escreva.nextInt();prioridade.add(entrada);System.out.println("Qual o tamanho do processo "+(i+1)+"?");entrada=escreva.nextInt();tamanho.add(entrada);}}}
Nesse caso, o ideal seria vc criar uma classe para representar um Processo, e essa classe ter os atributos do processo:
numero (número do processo)
prioridade
tamanho
entrada (não entendi o que é essa entrada. Entrada pode ser qualquer coisa)
Com isso, vc irá montar (com base nos valores obtidos do scanner) uma lista de Processos:
List<Processo>processos=newArrayList<>();
Com essa lista montada com os dados corretamente atribuídos, você consegue utilizar o sort. Mas antes de tudo, preciso saber se vc sabe como fazer os passos que citei acima.
J
jhonvirtuoso
A parte da classe é tranquilo, problema é implementar isso dentro de uma lista, sabes algum site como exemplo para que eu possa ver?
L
Lucas_Camara1 like
Para implementar uma lista de objetos (um objeto é criado a partir de uma classe). Você faz assim:
List<Processo>processos=newArrayList<>();
Processo será sua classe que representa um processo.
S
Solucao aceita
staroski1 like
Primeiro crie uma classe para representar cada Processo e seus atributos:
packagefiladeprocessos;importjava.io.PrintStream;importjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;importjava.util.List;importjava.util.Scanner;publicclassFilaDeProcessos{publicstaticvoidmain(String[]args){FilaDeProcessosprograma=newFilaDeProcessos();programa.executar();}privatefinalScannerentradaDados=newScanner(System.in);privatefinalPrintStreamsaidaDados=System.out;publicvoidexecutar(){List<Processo>processos=cadastrar();apresentar("Antes de ordenar:",processos);ordenar(processos);apresentar("Depois de ordenar:",processos);}privatevoidapresentar(Stringmensagem,List<Processo>processos){saidaDados.println(mensagem);for(Processoprocesso:processos){saidaDados.println(" "+processo);}}privateList<Processo>cadastrar(){saidaDados.println("Quantos processos deseja armazenar? ");intquantidadeProcessos=Integer.parseInt(entradaDados.nextLine());List<Processo>processos=newArrayList<>();for(inti=0;i<quantidadeProcessos;i++){intnumero=i+1;saidaDados.println("Qual a entrada do processo "+numero+"?");intentrada=Integer.parseInt(entradaDados.nextLine());saidaDados.println("Qual a prioridade do processo "+numero+"?");intprioridade=Integer.parseInt(entradaDados.nextLine());saidaDados.println("Qual o tamanho do processo "+numero+"?");inttamanho=Integer.parseInt(entradaDados.nextLine());Processoprocesso=newProcesso(entrada,prioridade,tamanho);processos.add(processo);}returnprocessos;}privatevoidordenar(List<Processo>processos){// Comparador utilizado para ordenar os processos em ordem de prioridade, entrada e tamanhoComparator<Processo>comparador=newComparator<Processo>(){@Overridepublicintcompare(Processop1,Processop2){intdiferenca=p1.prioridade-p2.prioridade;// compara a prioridadeif(diferenca==0){// se prioridades forem iguaisdiferenca=p1.entrada-p2.entrada;// compara a entrada}if(diferenca==0){// se entradas forem iguaisdiferenca=p1.tamanho-p2.tamanho;// compara o tamanho}returndiferenca;}};// Executa a ordenação com o comparador especificadoCollections.sort(processos,comparador);}}
J
jhonvirtuoso1 like
Era isso que eu queria, muito obrigado pela ajuda! Vou fechar e colocar como resolvido, salvasse meu dia kkkk vlw