Ordenar Array Strings

11 respostas
R

Como ordenar um array de Strings???

String vetor[] = new String[100];

vetor[0] = z;

vetor[1] = a;

vetor[2] = g;

vetor[3] = d;

agora preciso ordenar este vector por ordem alfabética usando o CompareTo, mas não estou conseguindo…

Alguma ajuda?

11 Respostas

thundercas

rapid_shark,

Você não pode usar List ou ArrayList???

abs

R

não, é um trabalho para faculdade.

Preciso usar o compareTo desse array…

já vim em muitos foruns falarem em

Arrays.sort(vetor);

mais nesse não funciona…

M
String vetor[] = new String[4];

		vetor[0] = "z";
		vetor[1] = "a";
		vetor[2] = "g";
		vetor[3] = "d"; 
		
		Arrays.sort(vetor, new Comparator() {
			
			public int compare(Object o1, Object o2) {
				String a = (String) o1;
				String b = (String) o2;
				return a.compareTo(b);
			}
		});

		for(int i=0;i<vetor.length;i++){
			System.out.println(vetor[i]);
		}
G

coloca seu código

R
public static void main(String[] args) {

		String vetor[] = new String[100];
		vetor[0] = "z";
		vetor[1] = "a";
		vetor[2] = "g";
		vetor[3] = "d";
		
	
		for (int i = 0; i <vetor.length-1; i++) {
			
			for (int j = 0; j <= vetor.length-1; j++) {
			
				
				if ((vetor[j].compareTo(vetor[j + 1]) > 0)){
					  String temp = vetor[i];
					  vetor[i] = vetor[j];
					  vetor[j] = temp;
				}
			}
		}
		
		
		for (int i = 0; i < vetor.length-1; i++) {
			System.out.println(vetor[i]);
		}

mas agora está a dar erro de NullPointerException em

if ((vetor[j].compareTo(vetor[j + 1]) > 0)){

...

thundercas

tente alterar a linha

for (int j = 0; j <= vetor.length-1; j++) {

para

for (int j = 0; j < vetor.length-1; j++) {

R

marcelux a sua sugestão funcionou na boa, mas não vou poder aplicar pois ainda não utilizei nada disso na faculdade, mas obrigado na mesma! :stuck_out_tongue:

R

continua no mesmo erro… :S

a logica está a mesma que a do site: http://pt.wikipedia.org/wiki/Bubble_sort#Java

mas um pouco modificada para Strings…

daniellfeijo

rapid_shark,

Será que isso lhe atende?

public class TestaVetor {
	public static void main(String[] args) {   
		String vetor[] = new String[4];   
        vetor[0] = "z";   
        vetor[1] = "a";   
        vetor[2] = "g";   
        vetor[3] = "d";
        for (int i=0; i<vetor.length-1; i++){
        	for (int t = 0; t <=vetor.length-2; t++) {   
                                            
                if ((vetor[t+1].compareTo(vetor[t]) < 0 )){   
                    String temp = vetor[t];  
                	vetor [t] = vetor[t+1];
                	vetor[t+1] = temp;
                         
                }
        	}    
        }
                              
       for (int i = 0; i < vetor.length; i++) {   
            System.out.println(vetor[i]);   
       }  


	}
}

Abraço…

ViniGodoy

Veja:

import java.util.Arrays;

public class Ordenacao {
	public static void main(String[] args) {
		String vetor[] = new String[100];

		vetor[0] = "z";
		vetor[1] = "a";
		vetor[2] = "g";
		vetor[3] = "d"; 
		
		Arrays.sort(vetor, 0, 4);
		
		for (String s : vetor)
			System.out.println(s);		
	}
}

Você deve passar os índices que não contém valores nulos, já que eles não podem ser comparados.
Considere também a possibilidade de usar um List no lugar de um vetor.

ViniGodoy

Outra possibilidade é fornecer um comparador que saiba lidar com nulos. Nesse caso, o comparador coloca os nulos atrás:

import java.util.Arrays;
import java.util.Comparator;

public class Ordenacao {
	public static void main(String[] args) {
		String vetor[] = new String[100];

		vetor[0] = "z";
		vetor[1] = "a";
		vetor[2] = "g";
		vetor[3] = "d";

		Arrays.sort(vetor, new Comparator<String>() {
			@Override
			public int compare(String o1, String o2) {
				if (o1 == null && o1 == null)
					return 0;
				if (o1 == null) 
					return 1;  //1
				if (o2 == null) 
					return -1; //2
				return o1.compareTo(o2);
			}
		});

		for (String s : vetor)
			System.out.println(s);
	}
}

Para colocar os nulos na frente, basta trocar o -1 por 1, e vice versa, nos pontos marcados com 1 e 2.

Só não use BubbleSort. É um algoritmo infantil, serve apenas para estudo.

Criado 1 de dezembro de 2009
Ultima resposta 1 de dez. de 2009
Respostas 11
Participantes 6