我需要得到一个字符串[]从一个集<字符串>,但我不知道如何做到这一点。以下操作失败:
Map<String, ?> myMap = gpxlist.getAll();
Set<String> myset = myMap.keySet();
String[] GPXFILES1 = (String[]) myset.toArray(); // Here it fails.
我怎样才能让它正常工作呢?
我需要得到一个字符串[]从一个集<字符串>,但我不知道如何做到这一点。以下操作失败:
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);
如果您还没有使用Java 11,那么使用Set#toArray(T[])方法,接受相同大小的类型化数组参数。
String[] GPXFILES1 = myset.toArray(new String[myset.size()]);
虽然仍然不在Java 11上,并且您不能保证myset在转换为数组时不可修改,但最好指定一个空类型数组。
String[] GPXFILES1 = myset.toArray(new String[0]);
其他回答
番石榴风格:
Set<String> myset = myMap.keySet();
FluentIterable.from(mySet).toArray(String.class);
更多信息:https://google.github.io/guava/releases/19.0/api/docs/com/google/common/collect/FluentIterable.html
使用Set#toArray(IntFunction<T[]>)方法,将IntFunction作为生成器。
String[] GPXFILES1 = myset.toArray(String[]::new);
如果您还没有使用Java 11,那么使用Set#toArray(T[])方法,接受相同大小的类型化数组参数。
String[] GPXFILES1 = myset.toArray(new String[myset.size()]);
虽然仍然不在Java 11上,并且您不能保证myset在转换为数组时不可修改,但最好指定一个空类型数组。
String[] GPXFILES1 = myset.toArray(new String[0]);
Set<String> stringSet= new HashSet<>();
String[] s = (String[])stringSet.toArray();
使用toArray(T[] a)方法:
String[] array = set.toArray(new String[0]);
我也面临着同样的情况。
我首先声明我需要的结构:
设置<String> myKeysInSet = null; String[] myArrayOfString = null;
在我的例子中,我有一个JSON对象,我需要这个JSON中的所有键存储在字符串数组中。使用GSON库,我使用JSON.keySet()来获取键并移动到我的Set:
myKeysInSet = json_any.keySet();
这样,我就有了一个包含所有键的Set结构,因为我需要它。我只需要把值放到字符串数组中。请看下面的代码:
myArrayOfString = myKeysInSet.toArray(new String[myKeysInSet.size()]);
这是我在StackOverflow的第一个答案。 很抱歉有任何错误:D