1. ホーム

[解決済み】Set<String>をString[]に変換する方法は?]

2022-03-29 12:49:09

質問

を取得する必要があります。 String[] のうち Set<String> が、どうすればいいのかわからない。以下のように失敗します。

Map<String, ?> myMap = gpxlist.getAll();
Set<String> myset = myMap.keySet();
String[] GPXFILES1 = (String[]) myset.toArray(); // Here it fails.

どうすれば動作するように修正できますか?

どのように解決するのですか?

を使用します。 Set#toArray(IntFunction<T[]>) メソッドで IntFunction をジェネレータとする。

String[] GPXFILES1 = myset.toArray(String[]::new);

まだJava11でない場合は Set#toArray(T[]) メソッドは、同じサイズの型付き配列の引数を取ります。

String[] GPXFILES1 = myset.toArray(new String[myset.size()]);

まだJava11には対応しておらず、保証はできませんが myset が配列に変換される時点で変更不可能な場合は、空の型付き配列を指定したほうがよいでしょう。

String[] GPXFILES1 = myset.toArray(new String[0]);