Comparar duas strings e descobrir qual a "maior"

Então preciso comparar duas Strings:

String textoA = “Joao”;
String textoB = “Maria”;

Preciso comparar o textoA com o textoB e descobrir qual é o “maior” no caso Maria…(pela ordem alfabética).

E não pode ser só a primeira letra, precisa ser o texto inteiro

String textoC = “Joao”;
String textoD = “Jose”;

Precisa mostrar que Jose é maior que João !

Tem alguma classe ou método para fazer isso ? Qual ? Como usa ?

Obrigado.

String nome1 = "Josefa";
String nome2 = "Maria";

if (nome1.compareTo (nome2) < 0) {
...

Referëncia: http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#compareTo(java.lang.String)

No caso se for < 0 o nome1 é menor ?

Opa,

Utilize o método compareTo da própria classe String. Acredito que voce tenha que usar o compareToIgnoreCase para isso

Boa tarde!

Utilize o método compareTo(String b) da String…

public static void main(String[] args) { String a = "Joao"; String b = "Jose"; int result = a.compareTo(b); if (result < 0) { System.out.println("a é menor que b"); } else if (result > 0) { System.out.println("a é maior que b"); } else { System.out.println("a é igual a b"); } }

Até mais! :smiley:

É

Melhor que utilizar o metodo compareTo da classe String é utilizar a classe Collator pois ela também faz a consideração dos acentos

faz o teste ai

[code] String str1 = “Ítalo”;
String str2 = “Maria”;
String str3 = “João”;

	int int1 = Collator.getInstance().compare(str1, str2);

	if (int1 < 0) {
		System.out.println(str1 + " é menor que " + str2);
	} else if (int1 > 0) {
		System.out.println(str1 + " é maior que " + str2);
	} else {
		System.out.println(str1 + " é igual a " + str2);
	}

	List<String> lis1 = Arrays.asList(new String[] { str2, str1, str3 });

	System.out.println(lis1.toString());

	Collections.sort(lis1, Collator.getInstance());

	System.out.println(lis1);

	Collections.sort(lis1);

	System.out.println(lis1);[/code]

Voce pode usar o metodo length() da classe String. Este pega o comprimento da String e te retorna o tamanho dela atraves de um int.
Um exemplo de como ficaria:

        String a = "Fulano";
        String b = "Fulano Ciclano";
        String resultado;
        
        if(a.length() > b.length()){
            resultado =  "A String " + a + " e maior que a String " + b;
        }else if(a.length() < b.length()){
            resultado = "A String " + b + "e maior que a String " + a;
        }else{
            resultado = "As Strings " + a + " e " + b + " tem o mesmo tamanho";
        }
        
        System.out.println(resultado);

Utilze o metodo compareTo da classe String que retonara um int quando o resultado for menor que 0 significa que é menor, se for 0 é igual e maior que 0 é maior. creio que obtera o resultado esperado.

Exemplo clássico de como é complicado escrever uma pergunta.

O autor original queria comparar duas strings lexicograficamente, ou seja, usar a ordenação do dicionário. Só que escreveu a palavra “maior”. É que em algumas linguagens, é realmente o operador “<” ou “>” que se usa para comparar strings lexicograficamente.

Embora tenha explicado corretamente seu problema depois, a palavra “maior” ficou na cabeça do Johnny (que não leu o resto da pergunta), que pensou simplesmente no comprimento da string, que normalmente não é um critério muito usado para ordenar strings :slight_smile: - e deu essa “solução” de comparar os comprimentos das strings.