Java:有效地将List中的项目放入HashMap

Java: Putting items from List into HashMap efficiently

本问题已经有最佳答案,请猛点这里访问。

我在这里有一个清单:

1
List<QueryStrings> queryStrings

和QueryStrings只是一个简单的类

1
2
3
4
5
public class QueryStrings {
    private Integer id;
    private String rel;
    private String impl;
}

我需要将List放入一个HashMap,其中id将是键,我现在这样做,一次循环List一个项:

1
2
3
4
5
HashMap<Integer, QueryStrings> queryMap = new HashMap<>();
for (QueryStrings element : queryStrings) {
    Integer thisId = Integer.parseInt(element.getId());
    queryMap.put(thisId, element);
}

有更好的方法吗? 我不想循环每个项目,这可能吗?

编辑:

对不起,我不应该解析整数,所以代码应该是这样的:

1
2
3
4
HashMap<Integer, QueryStrings> queryMap = new HashMap<>();
for (QueryStrings element : queryStrings) {
    queryMap.put(element.getId(), element);
}


如果它已经是int,请不要解析int!

1
2
3
4
HashMap<Integer, QueryStrings> queryMap = new HashMap<>();
for (QueryStrings element : queryStrings) {
    queryMap.put(element.getId(), element);
}

也就是说,如果它是Java 8,您可以使用更简洁的语法,尽管性能差异很小。

1
list.stream().collect(Collectors.toMap(QueryStrings::getId, Function.identity()));