我需要从String[]
中获得Set<String>
,但我不知道该怎么做。以下失败:
Map<String, ?> myMap = gpxlist.getAll();
Set<String> myset = myMap.keySet();
String[] GPXFILES1 = (String[]) myset.toArray(); // Here it fails.
如何修复它以使其有效?
答案 0 :(得分:439)
使用Set#toArray(T[])
方法获取相同大小的类型化数组参数。
String[] GPXFILES1 = myset.toArray(new String[myset.size()]);
也可以使用不同的大小,但这会强制toArray()
方法创建一个新的数组来返回而不是重用提供的参数,这可能最终效率较低。
答案 1 :(得分:37)
使用toArray(T[] a)方法:
String[] array = set.toArray(new String[0]);
答案 2 :(得分:5)
番石榴风格:
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
答案 3 :(得分:1)
在Java 11中,我们可以使用Collection.toArray(generator)
方法。以下代码将创建一个新的String数组:
Set<String> set = Set.of("one", "two", "three");
String[] array = set.toArray(String[]::new)
答案 4 :(得分:1)
Set<String> stringSet= new HashSet<>();
String[] s = (String[])stringSet.toArray();
答案 5 :(得分:0)
我遇到了同样的情况。
我首先宣布我需要的结构:
Set<String> myKeysInSet = null;
String[] myArrayOfString = null;
在我的例子中,我有一个JSON对象,我需要将这个JSON中的所有键存储在一个字符串数组中。使用GSON library,我使用JSON.keySet()来获取密钥并移动到我的集合:
myKeysInSet = json_any.keySet();
有了这个,我有一个包含所有键的Set结构,因为我需要它。所以我只需要我的字符串数组的值。请参阅以下代码:
<强> myArrayOfString = myKeysInSet.toArray(new String[myKeysInSet.size()]);
强>
这是我在StackOverflow中的第一个答案。 对不起任何错误:D