is mostly used for assigning from some defined value like:
Map m = new HashMap();
And using is not good, because you need to explicitly cast it(which means that you know your runtime type beforehand).
Usually you explicitly specify the return values.So let's see by cases:
1) You want to write very generic function which gets string and returns List>, then you can write like this
<K, V> List<Map<K, V>> getMapList(String s) {
...
}
Java will inference the type of K, V depending on what you're assigning to.
2) You want to return some specific type, then use that type:
<Integer, String> List<Map<Integer, String>> getMapList(String s) {
...
}