Это действительно должно выглядеть как
private Map<String, String> test = new HashMap<>();
Так что элементы обоих верны;) Map - это интерфейс, который определяет поведение, а HashMap - это реализация, обеспечивающая поведение.
Если вы хотите более строгую безопасность типов, вам следует использовать общие аргументы.Хотя они не являются строго необходимыми, они приносят большую пользу при уменьшении ошибок приложений.Так как дженерики были введены в Java 5, примеры, приведенные ранее, не будут показывать дженерические аргументы.
«оператор ромба» <> был представлен в Java 7 - это означает, что вы можетеуменьшите второе вхождение спецификатора универсального типа до значения <>.