1. ホーム
  2. java

[解決済み] 配列リストのアルファベット順ソート(大文字・小文字を区別しない)

2022-03-08 23:24:19

質問

文字列の配列リストがあります names は人名を含む。私は、この配列をアルファベット順に並べ替えたいのです。

ArrayList<String> names = new ArrayList<String>();
names.add("seetha");
names.add("sudhin");
names.add("Swetha");
names.add("Neethu");
names.add("ananya");
names.add("Athira");
names.add("bala");
names.add("Tony");
names.add("Karthika");
names.add("Nithin");
names.add("Vinod");
names.add("jeena");
Collections.sort(names);
for(int i=0; i<names.size(); i++)
    System.out.println(names.get(i));

上記の方法でリストをソートしてみました。しかし、ソートされた配列は次のように表示されます。

Athira
Karthika
..
..
ananya
bala
...

が、大文字小文字を区別しないようにしたい。という結果が欲しい。

ananya
Athira
bala

解決方法は?

カスタム Comparator が必要です。

Collections.sort(list, new Comparator<String>() {
    @Override
    public int compare(String s1, String s2) {
        return s1.compareToIgnoreCase(s2);
    }
});

または、Java 8を使用している場合。

list.sort(String::compareToIgnoreCase);