Да, вы можете использовать Map <> вместо всех конверсий, которые вы там делаете.
private Map<Character, Integer> inventory = new HashMap<>();
public int getLetterValue(char letter) {
return inventory.get(letter) == null ? 0 : inventory.get(letter);
}
public void incrementLetterValue(char letter, int value) {
int currentValue = getLetterValue(letter);
inventory.put(letter, currentValue + value);
}
public void subtractLetterValue(char letter, int value) {
if (inventory.get(letter) == null)
return;
int currentValue = getLetterValue(letter);
int subtractedValue = currentValue - value;
inventory.put(letter, Math.max(subtractedValue, 0));
}
public void addLetter(char letter) {
int currentLetterCount = getLetterValue(letter);
inventory.put(letter, currentLetterCount + 1);
}
public void addInventory(LetterInventory letterInventory) {
Map<Character, Integer> additionalInventory = letterInventory.getInventory();
additionalInventory.forEach((letter, value) -> {
this.incrementLetterValue(letter, value);
});
}
public void subtractInventory(LetterInventory letterInventory) {
Map<Character, Integer> additionalInventory = letterInventory.getInventory();
additionalInventory.forEach((letter, value) -> {
this.subtractLetterValue(letter, value);
});
}
public Map<Character, Integer> getInventory() {
return this.inventory;
}
}
И, конечно, если вам нужно, чтобы в нем не учитывался регистр, вы можете использовать Character.toLowerCase()
метод из Java. PS: это не окончательная версия кода. Вы можете внести некоторые изменения, чтобы выглядеть еще чище.