我正在(在c ++之后)使用Java,特别是在进行Android应用程序开发(Android Studio)时,但是在hashSet使用方面遇到了一些麻烦。 这就是问题所在:我找不到在任何容器中存储从“ keySet()”方法获得的地图键的方法;我试图将键存储在字符串向量或列表中,但发生错误。我该如何解决?
这是一段代码:
private void fillMap(Map<String, String> map, String[] strings){
String str;
map.put("Question1", "answer1");
map.put("Question2", "answer2");
map.put("Question3", "answer3");
Set<String> keys = map.keySet();
}
如您所见,我创建了一个地图,其键是问题,其值是答案。然后,我创建了一个Set,用于放置所有键;问题是我会尝试将集合的内容存储在有序容器中,但是我尝试的所有操作都会给我带来错误。
答案 0 :(得分:0)
假设您有一个Map<String, Integer>
,那么它的keySet()
是一个Set<String>
的接口,它是从更一般的Collection<String>
派生的。您可以将此收藏集添加到所有内容中。
Set<String> keys = map.keySet();
List<String> list = new ArrayList<>(keys); // 1
list.sort();
Collections.addAll(list, keys); // or 2
Collections.sort(list);
SortedSet<String> set = new TreeSet<>(keys);
对C ++程序员的警告:Vector是一个非常老的低效率类;而是使用ArrayList,因此使用变量,参数,结果类型为List。