我想创建这样的地图:
Map<int, String, String> map = new ArrayList<>();
map.(100, "SystemError", "General error");
您能推荐一些可以存储多个值的适当Java集合吗?
答案 0 :(得分:2)
最好创建自己的课程
class Error {
private int id;
private String logString;
private String description;
// plus getters and setters
}
,然后输入List<Error>
。如果需要地图,可以通过
Map<Integer, List<Error>> errorMap = errorList.stream().collect(groupingBy(Error::getId));
答案 1 :(得分:1)
看看Apache Commons MultiValuedMap。它可以为单个键存储多个值。
MultiValuedMap<Integer, String> map = new MultiValuedHashMap<>();
map.put(1, "A");
map.put(1, "B");
map.put(1, "C");
Collection<String> coll = map.get(1);
coll
将包含值“ A”,“ B”和“ C”。
Java EE还定义了他自己的替代方案:MultivaluedMap,这似乎与Apache的替代方案非常相似(据我所知,几乎相同)。
答案 2 :(得分:1)
Map<Integer, Collection<String>> errorMap = new HashMap<>();
errorMap.put(100, Arrays.asList("System error", "General error"));
Collection<String> errorNames = errorMap.get(100);
答案 3 :(得分:0)
这取决于您的用例,有三个可能的答案: