如何将 HashMap 中的多个值分配给 Java 中的变量?
How to assign multiple value from HashMap to variables in Java?
我有一个 HashMap 并将键值对分配给变量,如下所示:
Map<UUID, EmployeeDTO> result = employeeService.getEmployees(employeeUuids);
UUID key = result.entrySet().iterator().next().getKey();
EmployeeDTO value = result.entrySet().iterator().next().getValue();
但是,我不确定从这个 HashMap 中分配多个值的正确方法是什么。我当然想到了一个循环,但是对于命名变量,也许会有更好的方法。有什么想法吗?
map.forEach((k, v) -> {
UUID key1 = k;
EmployeeDTO value1 = v;
// what about the other values?
UUID key2 = k;
EmployeeDTO value2 = v;
});
你应该使用像
这样的值列表
Map<UUID, List<EmployeeDTO>> result
然后
result.get(KEY).add(VALUE);
您现在可以为单个键设置多个值
你无法在不知道地图大小的情况下创建变量,因此你需要将键和值存储在两个单独的数据结构中,例如 List
:
List<UUID> keys = new ArrayList<>();
List<EmployeeDTO> values = new ArrayList<>();
map.forEach((k, v) -> {
keys.add(k);
values.add(k);
});
如果地图的大小已知,您可以将条目存储在列表中并分配相应的键和值:
List<Map.Entry<UUID, EmployeeDTO>> entriesList = new ArrayList<>(map.entrySet());
UUID key1 = entriesList.get(0).getKey();
EmployeeDTO value1 = entriesList.get(0).getValue();
UUID key2 = entriesList.get(1).getKey();
EmployeeDTO value2 = entriesList.get(1).getValue();
// etc.
显然您需要为每个 key/value 执行此操作。理论上可以在保存变量的对象上使用循环和一些讨厌的反射,但这弊大于利。
您不能动态创建局部变量,如 key2
和 key3
。您需要一个数据结构,例如 List
。一个例子:
List<UUID> uuids = new ArrayList<>(result.size());
List<EmployeeDTO> employees = new ArrayList<>(result.size());
result.forEach((k,v)->{
uuids.add(k);
employees.add(v);
});
然后您可以使用 uuids.get(0)
、uuids.get(1)
等访问它们,employees.get(i)
也是如此。
我有一个 HashMap 并将键值对分配给变量,如下所示:
Map<UUID, EmployeeDTO> result = employeeService.getEmployees(employeeUuids);
UUID key = result.entrySet().iterator().next().getKey();
EmployeeDTO value = result.entrySet().iterator().next().getValue();
但是,我不确定从这个 HashMap 中分配多个值的正确方法是什么。我当然想到了一个循环,但是对于命名变量,也许会有更好的方法。有什么想法吗?
map.forEach((k, v) -> {
UUID key1 = k;
EmployeeDTO value1 = v;
// what about the other values?
UUID key2 = k;
EmployeeDTO value2 = v;
});
你应该使用像
这样的值列表Map<UUID, List<EmployeeDTO>> result
然后
result.get(KEY).add(VALUE);
您现在可以为单个键设置多个值
你无法在不知道地图大小的情况下创建变量,因此你需要将键和值存储在两个单独的数据结构中,例如 List
:
List<UUID> keys = new ArrayList<>();
List<EmployeeDTO> values = new ArrayList<>();
map.forEach((k, v) -> {
keys.add(k);
values.add(k);
});
如果地图的大小已知,您可以将条目存储在列表中并分配相应的键和值:
List<Map.Entry<UUID, EmployeeDTO>> entriesList = new ArrayList<>(map.entrySet());
UUID key1 = entriesList.get(0).getKey();
EmployeeDTO value1 = entriesList.get(0).getValue();
UUID key2 = entriesList.get(1).getKey();
EmployeeDTO value2 = entriesList.get(1).getValue();
// etc.
显然您需要为每个 key/value 执行此操作。理论上可以在保存变量的对象上使用循环和一些讨厌的反射,但这弊大于利。
您不能动态创建局部变量,如 key2
和 key3
。您需要一个数据结构,例如 List
。一个例子:
List<UUID> uuids = new ArrayList<>(result.size());
List<EmployeeDTO> employees = new ArrayList<>(result.size());
result.forEach((k,v)->{
uuids.add(k);
employees.add(v);
});
然后您可以使用 uuids.get(0)
、uuids.get(1)
等访问它们,employees.get(i)
也是如此。