web-dev-qa-db-de.com

Listen Sie ein Array von Strings in alphabetischer Reihenfolge auf

Ich habe ein Programm, bei dem der Benutzer eine Liste mit Namen eingibt. Ich habe einen Schalter, der zu einer Funktion geht, deren Namen ich in alphabetischer Reihenfolge ausdrucken möchte.

public static void orderedGuests(String[] hotel)
{
  //??
}

Ich habe beide probiert 

Arrays.sort(hotel);
System.out.println(Arrays.toString(hotel));

und

Java.util.Collections.sort(hotel);
17
Nick Mico

Komisch, Ihr Code scheint für mich zu funktionieren:

import Java.util.Arrays;

public class Test
{
    public static void main(String[] args)
    {
        // args is the list of guests
        Arrays.sort(args);
        for(int i = 0; i < args.length; i++)
            System.out.println(args[i]);
    }
}

Ich habe diesen Code mit "Java Test Bobby Joe Angel" ausgeführt und hier ist die Ausgabe:

$ Java Test Bobby Joe Angel
Angel
Bobby
Joe
21
Vineet Kosaraju

Das erste, was Sie versucht haben, scheint gut zu funktionieren. Hier ist ein Beispielprogramm.
Drücken Sie die "Start" -Taste oben auf dieser Seite , um die Ausgabe selbst auszuführen.

import Java.util.Arrays;

public class Foo{
    public static void main(String[] args) {
        String [] stringArray = {"ab", "aB", "c", "0", "2", "1Ad", "a10"};
        orderedGuests(stringArray);
    }

    public static void orderedGuests(String[] hotel)
    {
        Arrays.sort(hotel);
        System.out.println(Arrays.toString(hotel));
    }
}
4
zevdg

Sie können einfach Arrays#sort() verwenden, es funktioniert perfekt. Siehe dieses Beispiel:

String [] a = {"English","German","Italian","Korean","Blablablabla.."};
//before sort
for(int i = 0;i<a.length;i++)
{
  System.out.println(a[i]);
}
Arrays.sort(a);
System.out.println("After sort :");
for(int i = 0;i<a.length;i++)
{
  System.out.println(a[i]);
}
2
Azad

Hier ist der Code, der funktioniert:

import Java.util.Arrays;
import Java.util.Collections;

public class Test
{
    public static void main(String[] args)
    {
        orderedGuests1(new String[] { "c", "a", "b" });
        orderedGuests2(new String[] { "c", "a", "b" });
    }

    public static void orderedGuests1(String[] hotel)
    {
        Arrays.sort(hotel);
        System.out.println(Arrays.toString(hotel));
    }

    public static void orderedGuests2(String[] hotel)
    {
        Collections.sort(Arrays.asList(hotel));
        System.out.println(Arrays.toString(hotel));
    }

}
1
Amit

In alphabetischer Reihenfolge nehme ich an, dass die Reihenfolge wie folgt lautet: A | a <B | b <C | c ... Ich hoffe, das ist es, wonach @Nick sucht (oder war) und die Antwort folgt der obigen Annahme.

Ich würde vorschlagen, eine Klassenimplementvergleichsmethode von Comparator-interface zu haben:

public int compare(Object o1, Object o2) {
    return o1.toString().compareToIgnoreCase(o2.toString());
}

und von der aufrufenden Methode rufen Sie die Arrays.sort-Methode mit benutzerdefiniertem Comparator auf:

Arrays.sort(inputArray, customComparator);

Beobachtete Ergebnisse: Eingabe Array: "Vani", "Kali", "Mohan", "Soni", "kuldeep", "Arun"

ausgabe (alphabetische Reihenfolge) ist: Arun, Kali, Kuldeep, Mohan, Soni, Vani

Ausgabe (natürliche Reihenfolge durch Ausführen von Arrays.sort (inputArray) ist: Arun, Kali, Mohan, Soni, Vani, Kuldeep

Daher ist [Vani <kuldeep], was für mein Verständnis der alphabetischen Reihenfolge nicht die erwünschte Sache ist, im Falle einer natürlichen Ordnung.

zum besseren Verständnis der natürlichen und alphabetischen/lexikalischen Reihenfolge besuchen Sie Diskussion hier

1
Vinayak

Java.util.Collections.sort (listOfCountryNames, Collator.getInstance ());

1
Shan Arshad

CompareTo()-Methode: Die beiden Zeichenfolgen werden basierend auf Unicode-Zeichenwerten verglichen.

import Java.util.*;

public class Test {

int n,i,temp;
String names[n];

public static void main(String[] args) {
String names[5] = {"Brian","Joshua","Louis","David","Marcus"};

for(i=0;i<5;i++){
    for(j=i+1;i<n;j++){
        if(names[i].CompareTo(names[j]>0) {
             temp=names[i];
             names[i]=names[j];
             names[j]=temp;
         } else
             System.out.println("Alphabetically Ordered");                               
         }
     }                              
}
0
Joshua Poddoku
**//With the help of this code u not just sort the arrays in alphabetical order but also can take string from user or console or keyboard

import Java.util.Scanner;
import Java.util.Arrays;
public class ReadName
{
final static int ARRAY_ELEMENTS = 3;
public static void main(String[] args)
{
String[] theNames = new String[5];
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter the names: ");
for (int i=0;i<theNames.length ;i++ )
{           
theNames[i] = keyboard.nextLine();
}
System.out.println("**********************");
Arrays.sort(theNames);
for (int i=0;i<theNames.length ;i++ )
{
System.out.println("Name are " + theNames[i]);
}
}
}**
0

Arrays.sort (stringArray); Hiermit wird das String-Array basierend auf den Unicode-Zeichenwerten sortiert. Alle Zeichenfolgen, die am Anfang der Zeichenfolge Großbuchstaben enthalten, befinden sich alphabetisch an der Spitze der sortierten Liste, gefolgt von allen Zeichenfolgen mit Kleinbuchstaben. Wenn das Array Zeichenfolgen enthält, die sowohl mit Großbuchstaben als auch mit Kleinbuchstaben beginnen, würde das sortierte Array keine alphabetische Liste ohne Berücksichtigung der Groß- und Kleinschreibung anzeigen 

String[] strArray = { "Carol", "bob", "Alice" };
Arrays.sort(strList);
System.out.println(Arrays.toString(hotel));

Ausgabe ist: Alice, Carol, Bob, 

Wenn Sie die Strings ohne Berücksichtigung von Groß- und Kleinschreibung sortieren möchten, benötigen Sie ein zweites Argument, einen Comparator, für Arrays.sort (). Ein solcher Komparator wurde bereits für uns geschrieben und kann als Statik für die String-Klasse CASE_INSENSITIVE_ORDER abgerufen werden.

String[] strArray = { "Carol", "bob", "Alice" };
Arrays.sort(stringArray, String.CASE_INSENSITIVE_ORDER);
System.out.println(Arrays.toString(strArray ));

Ausgabe ist: Alice, Bob, Carol

0
Fergal Fitz

Sie können die Methode Arrays.sort () verwenden. Hier ist das Beispiel

import Java.util.Arrays;

public class Test 
{
    public static void main(String[] args) 
    {
        String arrString[] = { "peter", "taylor", "brooke", "frederick", "cameron" };
        orderedGuests(arrString);
    }

    public static void orderedGuests(String[] hotel)
    {
        Arrays.sort(hotel);
        System.out.println(Arrays.toString(hotel));
    }
}

Ausgabe

[Brook, Cameron, Frederick, Peter, Taylor] 

0
Shiva
 public static String[] textSort(String[] words) {
    for (int i = 0; i < words.length; i++) {
        for (int j = i + 1; j < words.length; j++) {
            if (words[i].compareTo(words[j]) > 0) {
                String temp = words[i];
                words[i] = words[j];
                words[j] = temp;
            }
        }
    }

    return words;
}
0
MOSDEV