List<ClassA> -> Map<Field, ClassA>
list.stream().collect(Collectors.toMap(ClassA::getField, value -> value));
List<ClassA> -> Map<Field, ClassB>
list.stream().collect(Collectors.toMap(ClassA::getField, value -> new ClassB()));
List<ClassA> -> Map<FieldA, FieldB>
list.stream().collect(Collectors.toMap(ClassA::getFieldA, ClassA::getFieldB));