web-dev-qa-db-ja.com

文字列の配列をアルファベット順にリストします

ユーザーが名前のリストを入力するプログラムがあります。私は名前をアルファベット順に印刷したい関数に行くスイッチケースを持っています。

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

私は両方を試しました

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

そして

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

奇妙なことに、あなたのコードは私にとってうまくいくようです:

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
24
Vineet Kosaraju

最初に試したのはうまくいくようです。以下にプログラム例を示します。
このページ の上部にある[開始]ボタンを押して実行し、出力を自分で確認します。

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

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]);
}
3
Azad
Java.util.Collections.sort(listOfCountryNames, Collator.getInstance());
2
Shan Arshad

動作するコードは次のとおりです。

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

CompareTo()メソッド:2つの文字列は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");                               
         }
     }                              
}
1
Joshua Poddoku

アルファベット順で、私は次のように仮定します:A | a <B | b <C | c ...これが@Nickが探している(またはしていた)ものであり、答えは上記の仮定に従うことを望みます。

Comparator-interfaceのcompareメソッドをクラスに実装することをお勧めします。

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

呼び出し元のメソッドから、カスタムComparatorでArrays.sortメソッドを呼び出します。

Arrays.sort(inputArray, customComparator);

観察された結果:入力配列:「Vani」、「Kali」、「Mohan」、「Soni」、「kuldeep」、「Arun」

出力(アルファベット順)は、Arun、Kali、kuldeep、Mohan、Soni、Vaniです。

出力(Arrays.sort(inputArray)の実行による自然順序は次のとおりです:Arun、Kali、Mohan、Soni、Vani、kuldeep

したがって、自然な順序付けの場合、[Vani <kuldeep]これは、アルファベット順の私の理解では望ましいことではありません。

自然順およびアルファベット順/語彙順の詳細については、こちらをご覧ください ここでの議論

1
Vinayak

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

出力

[ブルック、キャメロン、フレデリック、ピーター、テイラー]

1
Shiva
**//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);これにより、Unicode文字値に基づいて文字列配列がソートされます。文字列の先頭に大文字を含むすべての文字列は、ソートされたリストの先頭にアルファベット順に配置され、その後に小文字のすべての文字列が続きます。したがって、大文字と小文字の両方で始まる文字列が配列に含まれている場合、ソートされた配列は大文字と小文字を区別しないアルファベット順のリストを返しません。

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

出力:アリス、キャロル、ボブ、

大文字と小文字を区別せずに文字列をソートする必要がある場合、Arrays.sort()の2番目の引数Comparatorが必要です。このようなコンパレータはすでに作成されており、CASE_INSENSITIVE_ORDERという名前のStringクラスで静的としてアクセスできます。

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

出力:アリス、ボブ、キャロル

0
Fergal Fitz
 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