如何将Set <String>转换为String ?
我需要从Set<String>
获得一个String[]
,但是我不知道该怎么做。 以下失败:
Map<String, ?> myMap = gpxlist.getAll(); Set<String> myset = myMap.keySet(); String[] GPXFILES1 = (String[]) myset.toArray(); // Here it fails.
我怎样才能解决这个问题呢?
使用Set#toArray(T[])
方法采用相同大小的types化数组参数。
String[] GPXFILES1 = myset.toArray(new String[myset.size()]);
不同的大小也可以,但是这会迫使toArray()
方法创build一个新的数组来返回,而不是重用提供的参数,这可能会降低效率。 另请参阅AbstractCollection#toArray()
的源代码 。
在Java 8中,我们可以使用streamAPI:
String[] array = set.stream().toArray(String[]::new);
我们还可以使用IntFunction<A[]> generator
的toArray()的重载版本,如下所示:
String[] array = set.stream.toArray(n -> new String[n]);
这里生成器函数的目的是取整数(所需数组的大小)并生成所需大小的数组。 我个人更喜欢使用方法引用的前一种方法,而不是使用lambdaexpression式的方法。
使用toArray(T [] a)方法:
String[] array = set.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<String> myKeysInSet = null; String[] myArrayOfString = null;
在我的情况下,我有一个JSON对象,我需要在这个JSON中的所有键存储在一个string数组。 使用GSON库 ,我使用JSON.keySet()来获取键并移动到我的Set:
myKeysInSet = json_any.keySet();
有了这个,我有一个所有键的Set结构,因为我需要它。 所以我只需要将值赋给我的string数组。 请参阅下面的代码:
myArrayOfString = myKeysInSet.toArray(new String[myKeysInSet.size()]);
这是我在StackOverflow中的第一个答案。 对不起,任何错误:D