如何将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