Выполните итерацию по entrySet, чтобы получить соответствующий ключ из newProdList в oldList и установить значение из этой записи из oldList в newProdList.
Подробнее о карте Запись
Map<String,String> newProdList = new HashMap<>();
newProdList.put("18", null);
newProdList.put("2", null);
newProdList.put("21", "1099887");
newProdList.put("5", null);
newProdList.put("22", "1099888");
newProdList.put("7", null);
newProdList.put("14", null);
Map<String,String> oldList = new HashMap<>();
oldList.put("2", "Stock [location=AAQ-08-2, stockQty=150, productCode=null, productName=Emergence Men's Running Shoes, division=Shoes, category=Running]");
oldList.put("3", "Stock [location=AAR-01-1, stockQty=192, productCode=19234402, productName=Men's Running Shoes 19234402, division=Shoes, category=Running]");
oldList.put("4", "Stock [location=BAN-08-1, stockQty=190, productCode=19108206, productName=Carson 2 New Core Men?s Running Shoes, division=Shoes, category=Running]");
oldList.put("21", "Stock [location=BAN-08-1, stockQty=190, productCode=19108206, productName=Carson 2 New Core Men?s Running Shoes, division=Shoes, category=Running]");
newProdList.entrySet().stream().forEach(e -> e.setValue(oldList.get(e.getKey())));
Дополнительные пояснения к этой симпатичной схеме, как и требовалось.