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]);
}
[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!
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…
rapid_shark:
Arrays.sort(vetor);
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