Вы можете использовать функциональные интерфейсы (представленные в Java 8) для этого:
public void consumeFile(File yamlFile, BiConsumer<? super String, ? super Object> consumer){
YamlConfiguration config = YamlConfiguration.loadConfiguration(yamlFile);
for (String path : config.getKeys(true)){
if (config.get(path) != null){
consumer.accept(path, config.get(path));
}
}
}
Который затем можно вызывать буквально с чем угодно, вам просто нужно указать лямбду, которая принимает 2 параметра:
// collect into a map
Map<String, Object> map = /* hash map, linked hash map, tree map, you decide */;
consumeFile(yamlFile, map::put);
// just print them, why not?
consumeFile(yamlFile, (key, value) -> System.out.println(key + " = " + value));
Видите ли, использование возможно бесконечно. Ограничено только вашим вариантом использования и воображением.
Если вы не можете использовать Java 8 (хотя, вероятно, вам следует), надежда есть. Поскольку вы оба раза возвращаете Map
, при вызове метода вы можете решить, в какую реализацию карты вы хотите собрать:
public Map<String, Object> consumeFile(File yamlFile, Map<String, Object> map){
YamlConfiguration config = YamlConfiguration.loadConfiguration(yamlFile);
for (String path : config.getKeys(true)){
if (config.get(path) != null){
map.put(path, config.get(path));
}
}
return map;
}
Что можно назвать так:
Map<String, Object> map = consumeFile(yamlFile, new /*Linked*/HashMap<>());
Опять же, какую реализацию карт вы хотите использовать, вы можете решить для своих нужд.