Ordenar Array Strings

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?

rapid_shark,

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

abs

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…

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]);
		}

coloca seu código

[code]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]);
	}[/code]

mas agora está a dar erro de NullPointerException em

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

tente alterar a linha

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

para

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

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:

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…

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…

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.

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.

1 curtida