Список массивов строк в алфавитном порядке

У меня есть программа, в которой пользователь вводит список имен. Я имею случай переключения к функции, которую я хотел бы, чтобы имена печатались в алфавитном порядке.

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

Я пробовал оба

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

и

java.util.Collections.sort(hotel);

Ответ 1

Странно, ваш код работает для меня:

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

Я запустил этот код, используя "java Test Bobby Joe Angel", и вот результат:

$ java Test Bobby Joe Angel
Angel
Bobby
Joe

Ответ 2

Первое, что вы пробовали, похоже, отлично работает. Вот пример программы.
Нажмите кнопку "Пуск" в верхней части на этой странице, чтобы запустить ее, чтобы увидеть результат самостоятельно.

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

Ответ 3

Вы можете просто использовать Arrays#sort(), он отлично работает. См. Этот пример:

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

Ответ 4

Вот код, который работает:

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

}

Ответ 5

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

Ответ 6

В алфавитном порядке я предполагаю, что порядок должен быть: A | a < B | b < C | C... Надеюсь, это то, что @Nick (или был) ищет, и ответ следует вышеприведенному предположению.

Я бы предложил использовать метод сравнения класса для класса Comparator-интерфейса:

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

а из вызывающего метода вызывается метод Arrays.sort с пользовательским Компаратором как:

Arrays.sort(inputArray, customComparator);

Наблюдаемые результаты: входной массив: "Вани", "Кали", "Мохан", "Сони", "Кулдеп", "Арун"

вывод (в алфавитном порядке): Арун, Кали, кулдеп, Мохан, Сони, Вани

Вывод (Естественный порядок путем выполнения массива Array.sort(inputArray): Арун, Кали, Мохан, Сони, Вани, Кулдеп

Таким образом, в случае естественного упорядочения, [Vani < kuldeep], который, к моему пониманию алфавитного порядка, не является желаемым.

для лучшего понимания естественного и алфавитного/лексического порядка посетите обсуждение здесь

Ответ 7

Вы можете использовать метод Arrays.sort(). Вот пример,

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

Выход

[Брук, Кэмерон, Фредерик, Питер, Тейлор]

Ответ 8

CompareTo(): две строки сравниваются на основе значений символов Unicode.

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

Ответ 9

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

Ответ 10

Arrays.sort(StringArray); Это сортирует строковый массив на основе значений символов Unicode. Все строки, содержащие верхние символы в начале строки, будут расположены вверху отсортированного списка в алфавитном порядке, а затем все строки с строчными символами. Следовательно, если массив содержит строки, начинающиеся как с прописными буквами, так и с строчными символами, сортированный массив не возвращает алфавитный список, не учитывающий регистр,

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

Вывод: Алиса, Кэрол, Боб,

Если вам требуется сортировка строк без учета случая, вам понадобится второй аргумент Comparator для Array.sort(). Такой компаратор уже написан для нас и может быть доступен как статический объект в классе String с именем CASE_INSENSITIVE_ORDER.

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

Вывод: Алиса, Боб, Кэрол

Ответ 11

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