Converting HashMap data to a Response object
The only thing you need is a saparate method doing the parsing. 

This parse method can either be in a specific converter class that is used in a specific case when you're taking the strings and ammounts from a certain place. 

public static FinalProduct parse(String key, Long quantity) {
    //transform into FinalProduct here
}


Or if you'll always start from those business specific Strings you could just provide a constructor for FinalProduct that takes those as input params:

public class FinalProduct{

    private String id;
    private String city;
    private Long code;
    private String client;
    private String type;
    private Long qty;

    public FinalProduct(String codedProduct, Long qty) {
        this.qty = qty;
        //parse coded input string here
    } 

    // only getters here, no setters
}


Since the variables are probably not going to change after initializing the class you can make them final and not provide setters. Immutable objects are generaly easier to get right in a production code base (less edge cases when using multi threading for example).

Using streams isn't going to make much of a difference really. The parsing itself isn't going to change and the loop is already as simple as it's going to get. I personally prefer the loop version over the stream version when going through a map:

for loop:

List&lt;FinalProduct&gt; products = new ArrayList&lt;&gt;();
for (Map.Entry&lt;String, Long&gt; entry : map.entrySet()) {
    products.add(new FinalProduct(entry.getKey(), entry.getValue()));
}


stream:

map.entrySet().stream()
        .map(entry -&gt; new FinalProduct(entry.getKey(), entry.getValue()))
        .collect(Collectors.toList());