Вам необходимо объявить ваш HashMap как таковой, чтобы он знал, какой тип пары ключ / значение. Вы должны всегда создавать экземпляры Hashmaps таким образом, и я не уверен, позволит ли это вам даже без этого. Я знаю, что в таких вещах, как Actionscript, вы можете избежать определения словаря, а не того, какие типы должны быть в нем, но в Java вы должны определить используемые типы, и вы не можете использовать примитивные типы (я считаю) как int, double и т. д.
HashMap<Integer, Cart> cartList = new HashMap<Integer, Cart>();
и productId должен быть целым числом, а не просто int