Нет прямой функции для решения ваших проблем. Но, используя streams
& reflection
, вы можете достичь этого.
class EmployeeEntity {
private int empId;
private String name;
// all arguments constructor
// getters
}
private Map<String, Object> toMap(final EmployeeEntity employeeEntity,
final String... fieldNamesToExtract) {
final Map<String, Object> employeeMap = new HashMap<>();
final Class<? extends EmployeeEntity> employeeEntityClass = employeeEntity.getClass();
for (final String fieldName : fieldNamesToExtract) {
try {
final Field declaredField = employeeEntityClass.getDeclaredField(fieldName);
declaredField.setAccessible(true); // because the fields are private
employeeMap.put(declaredField.getName(), declaredField.get(employeeEntity));
} catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {
System.out.println("e = " + e);
throw new RuntimeException(e);
}
}
return employeeMap;
}
final List<EmployeeEntity> employeeEntities = Arrays
.asList(new EmployeeEntity(1, "A"),
new EmployeeEntity(2, "B"),
new EmployeeEntity(3, "C"));
final List<Map<String, Object>> listOfEmployeeEntityMap = employeeEntities.stream()
.map(employeeEntity -> toMap(employeeEntity, "empId", "name"))
.collect(Collectors.toList());