[英]How can I get a specific attribute value for all the keys contained in a HashMap?
我有一个哈希图: Map<String, Paper> numberMapping = new HashMap<>();
class Paper String[] author; String[] scores;
String[] author; String[] scores;
我想检索哈希图中包含的每个对象的所有作者。
我试过System.out.print(numberMapping.values().getAuthor());
但它不起作用,我该怎么做? 提前致谢。
您没有看到用户友好的输出,因为您正在打印 String[] 对象,该对象没有友好的 toString() 方法。
要么使用 use Set<String>
而不是String[]
,它具有更好的实现,或者假设 Java 8+,一种功能方式可能是:
Set<String> allAuthors = numberMapping.values()
.stream()
.map(paper -> paper.author)
.flatMap(author -> Arrays.stream(author))
.collect(Collectors.toSet());
System.out.println(allAuthors);
此外,通常的做法是对引用集合的变量使用复数形式。
我假设输出的整体顺序对您来说无关紧要,因为您正在使用Hashmap
来存储值,正如评论中所指出的
您可以通过以下方式做到这一点:
List<String[]> authors = ...
for (Paper paper : numberMapping.values()) {
authors.add(paper.getAuthor());
}
//print authors
或者,您可以使用 Stream api,如下所示:
System.out.println(numberMapping.values().stream().
map(paper -> paper.getAuthor()).
collect(Collectors::asList));
现在请记住,您有作者数组,因此它可能无法正确打印,因为数组没有实现内置的 toString,因此您可能需要遍历每个元素并使用Arrays.toString(authors)
打印Arrays.toString(authors)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.