Если я получу ваш код правильно, вы ищете что-то вроде этого:
Predicate<Map<String, Object>> hasExpectedName =
prod -> prod.containsKey("NAME") && prod.get("NAME").toString().equalsIgnoreCase(sProductName);
Map<String, Object> mProductMap =
lmProducts.stream()
.filter(hasExpectedName)
.findFirst()
.orElse(null); // <= return null or a default value
// .orElseThrow(...) // <= or you can throw an exception if you want
Хотя я бы сделал в несколько более стиле ООП:
Определитекласс для хранения данных продукта:
static class Product {
private String name;
private String price;
private String quantity;
// Constructor & setters & getters
}
, затем извлечение данных в объекты продукта:
// ...
System.out.println("PRODUCT\t PRICE\t QUANTITY");
do {
product = new Product(
resultSet.getString("NAME"),
resultSet.getString("PRICE"),
resultSet.getString("QUANTITY")
);
// System.out.println(...);
products.add(product);
} while (resultSet.next());
// ...
Теперь операции с потоками довольно просты:
Product product = products.stream()
.filter(p -> p.getName().equalsIgnoreCase(sProductName))
.findFirst() // or .findAny()
.orElse(null); // or a default value