Ordenar String?  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
Java_Terminator
JavaEvangelist

Membro desde: 31/07/2009 06:37:37
Mensagens: 437
Offline

Galera preciso criar um algoritmo para ordenar uma lista de strings, porem
preciso do algoritmo, alguem sabe por onde posso começar?, ja to tentando isso
faz uns 5 dias heheh;.. grato
santos.fernando
JavaEvangelist
[Avatar]

Membro desde: 28/02/2007 20:14:15
Mensagens: 487
Localização: Curitiba
Offline

Post o que vc já fez para podermos analisar e te ajudar.

Deus não escolhe os capacitados, mas capacita os escolhidos !
WendersonLP
Java Ninja
[Avatar]

Membro desde: 28/03/2009 06:31:49
Mensagens: 261
Localização: Sergipe
Offline

Bem se for nomes você pode pegar o código de cada caracter desse nome e somá-los,
e ordenar as strings pela soma dos caracteres.

Wenderson
Estudande de Sistemas de Informação
5° período
Universidade Federal de Sergipe

http://twitter.com/wenderson_se

[WWW]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Procure por algorítmo da bolha, Quick sort, Merge sort ou Heap sort. Todos fazem ordenação.

Para comparar duas Strings, use o método compare, da própria classe String. Ele gera um resultado mais consistente do que a sugestão do Wenderson, que provavelmente gerará uma ordenação sem muito sentido para o usuário.

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
Romildo_Paiter
JavaChild
[Avatar]

Membro desde: 09/04/2008 17:35:24
Mensagens: 129
Offline

Bom com disse o nosso amigo ViniGodoy, existem alguns algoritimos para você fazer ordenação.

Mas o bom do Java é utilizar o que ele já oferece de melhor para essa solução sem você praticamente fazer nada e utilizar do conceito de coleções.

Acho que quem vai poder te ajudar mais é utilizar uma coleção do tipo List, usando um ArrayList. E utilizar um método sort, que já vem por herança.

Da uma estudada sobre isso que você vai ver como isso pode te ajudar muito.

Blz

Falow boa semana a todos.

att

Romildo Jozue Paiter

Romildo Jozué Paiter

Graduando em Sistema da Informação :: UFMT
Técnico em Desenvolvimento de Sistemas e Rede de Computadores.
[Yahoo!] [MSN]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Romildo_Paiter wrote:Acho que quem vai poder te ajudar mais é utilizar uma coleção do tipo List, usando um ArrayList. E utilizar um método sort, que já vem por herança.


O método sort não vem por herança. Ele está na classe Collections e não na classe Collection (que é pai de ArrayList). Tanto que é usado assim:



Para arrays também existe o método sort, mas na classe Arrays:


Mas como o próprio autor do tópico disse que precisa do algorítmo em si, e não só de um método pronto, resolvi postar ali os métodos de ordenação conhecidos. Ele agora que escolha um e implemente.

Outra opção é ver como esses métodos são implementados nos fontes do Java.


PS: Para uma ordenação baseada no alfabeto, é bom usar um comparador que leve em consideração a lingua sendo utilizada. O Java possui uma classe para isso, chamada Collator:


This message was edited 5 times. Last update was at 16/08/2010 11:50:05


@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
Romildo_Paiter
JavaChild
[Avatar]

Membro desde: 09/04/2008 17:35:24
Mensagens: 129
Offline

Valew Vini, obrigado pela correção..

E o Nosso amigo ganhou já o código, e é como vc disse. Vai dele usar essa dica ou Implementar seu próprio método.

att

Romildo Paiter

Romildo Jozué Paiter

Graduando em Sistema da Informação :: UFMT
Técnico em Desenvolvimento de Sistemas e Rede de Computadores.
[Yahoo!] [MSN]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Mais interessante é ver como isso fica no .net:



Ou, com a sintaxe do lambda:

This message was edited 2 times. Last update was at 16/08/2010 13:36:25


@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
Rhomullo
Smalltalk

Membro desde: 03/06/2011 14:02:19
Mensagens: 1
Offline

A Ordenação, fica assim:
O Usuário Digita os Nomes e Ele Mostrar a Ordem por Digitação e a Ordem Alfabética do Nomes Digitados:


import java.text.Collator;
import java.util.*;
import javax.swing.*;
import java.util.Scanner;
public class Alunos {
public static void main(String[] args) {

Scanner ord = new Scanner(System.in);

System.out.println("Digite o 1º Numero: ");
String n1 = ord.next();

System.out.println("Digite o 2º Numero: ");
String n2 = ord.next();

System.out.println("Digite o 3º Numero: ");
String n3 = ord.next();

System.out.println("Digite o 4º Numero: ");
String n4 = ord.next();

System.out.println("Digite o 5º Numero: ");
String n5 = ord.next();

System.out.println("Digite o 6º Numero: ");
String n6 = ord.next();

System.out.println("Digite o 7º Numero: ");
String n7 = ord.next();

System.out.println("Digite o 8º Numero: ");
String n8 = ord.next();

System.out.println("Digite o 9º Numero: ");
String n9 = ord.next();

System.out.println("Digite o 10º Numero: ");
String n10 = ord.next();

List<String> lista = new ArrayList<String>();
lista.add(" "+n1);
lista.add(" "+n2);
lista.add(" "+n3);
lista.add(" "+n4);
lista.add(" "+n5);
lista.add(" "+n6);
lista.add(" "+n7);
lista.add(" "+n;
lista.add(" "+n9);
lista.add(" "+n10);

//Ordena pela tabela unicode.
Collections.sort(lista);
System.out.println("Lista de Nomes Digitados: "+lista);

//Ordena de acordo com o dicionário
Collections.sort(lista, Collator.getInstance());
System.out.println("Lista Ordenada: "+lista);




}
}
adriano_si
JWizard
[Avatar]

Membro desde: 01/10/2006 15:29:40
Mensagens: 2047
Offline

Rhomullo wrote:A Ordenação, fica assim:
O Usuário Digita os Nomes e Ele Mostrar a Ordem por Digitação e a Ordem Alfabética do Nomes Digitados:


import java.text.Collator;
import java.util.*;
import javax.swing.*;
import java.util.Scanner;
public class Alunos {
public static void main(String[] args) {

Scanner ord = new Scanner(System.in);

System.out.println("Digite o 1º Numero: ");
String n1 = ord.next();

System.out.println("Digite o 2º Numero: ");
String n2 = ord.next();

System.out.println("Digite o 3º Numero: ");
String n3 = ord.next();

System.out.println("Digite o 4º Numero: ");
String n4 = ord.next();

System.out.println("Digite o 5º Numero: ");
String n5 = ord.next();

System.out.println("Digite o 6º Numero: ");
String n6 = ord.next();

System.out.println("Digite o 7º Numero: ");
String n7 = ord.next();

System.out.println("Digite o 8º Numero: ");
String n8 = ord.next();

System.out.println("Digite o 9º Numero: ");
String n9 = ord.next();

System.out.println("Digite o 10º Numero: ");
String n10 = ord.next();

List<String> lista = new ArrayList<String>();
lista.add(" "+n1);
lista.add(" "+n2);
lista.add(" "+n3);
lista.add(" "+n4);
lista.add(" "+n5);
lista.add(" "+n6);
lista.add(" "+n7);
lista.add(" "+n;
lista.add(" "+n9);
lista.add(" "+n10);

//Ordena pela tabela unicode.
Collections.sort(lista);
System.out.println("Lista de Nomes Digitados: "+lista);

//Ordena de acordo com o dicionário
Collections.sort(lista, Collator.getInstance());
System.out.println("Lista Ordenada: "+lista);




}
}


Por, favor, antes de responder novamente leia as regras do fórum e leia os Posts que estão fixos nos fórum. Eles irão lhe ajudar na sobrevivência no GUJ.

Da próxima vez que responder, leve em consideração a data de criação do Post e se o mesmo já não foi respondido de forma satisfatória, como foi o caso desse aqui.

Enfim, não ressucite tópicos que á estão mortos ou já foram resolvidos, a não ser que seja para reviver a dúvida e incrementar alguma coisa realmente nova na questão. Ainda assim seria bom estudar a possibilidade de criar um POst novo.

Abs [] e bem vindo ao GUJ.

"É preciso ter mais fé pra acreditar que viemos do nada..."

Blog - http://aohana.wordpress.com/

Padrão de nomenclatura Java - http://www.oracle.com/technetwork/java/codeconventions-139411.html#16712

Doc. Java - http://www.oracle.com/technetwork/java/javase/documentation/index.html

Faça perguntas Inteligentes - http://istf.com.br/perguntas

Sobrevivência no GUJ:
(Regras) http://www.guj.com.br/java/21516-regras-do-forum

(Boa prática) http://www.guj.com.br/java/15477-antes-de-voce-perguntar

(Código fonte) http://www.guj.com.br/java/50115-voce-e-novo-no-guj-vai-criar-um-topico-e-colar-seu-codigo-fonte-leia-aqui-antes-por-favor
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team