2013-02-18 3 views
6

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

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

Я попытался как

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

и

java.util.Collections.sort(hotel); 
+3

Что не получилось об этих решениях? –

+0

Опубликовать весь код. С заказом вы все делаете. – Maroun

ответ

11

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

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 
1

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

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

} 
2

Вы можете просто использовать 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

Первое, что вы пытались, кажется, работает хорошо. Вот пример программы.
Нажмите кнопку «Пуск» в верхней части this page, чтобы запустить ее, чтобы увидеть результат самостоятельно.

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

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

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

По алфавиту порядка Я предполагаю, что для того, чтобы быть: | < 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); 

Наблюдаемые результаты: input Array: «Vani», «Kali», «Mohan», «Soni», «kuldeep», «Arun»

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

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

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

для большего понимания естественного и алфавитного/посещение лексического порядка discussion here

0

Массивы.сортировать (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)); 

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

Смежные вопросы