Transform a List<Object> to a Map<String, Integer> such that the String is not a duplicate value using Java 8 Streams

That's because of an incorrect merge function, you should instead use:

Map<String, Integer> map = studentList.stream()
        .collect(Collectors.toMap(
                student -> student.getStudentName().toLowerCase(),
                Student::getMarks,
                (s1, s2) -> s1 + s2, // add values when merging
                LinkedHashMap::new));

An alternative solution is to use groupingBy with summingInt:

Map<String, Integer> studentMap = studentList.stream()
        .collect(Collectors.groupingBy(
                s -> s.getStudentName().toLowerCase(),
                Collectors.summingInt(Student::getMarks)));

Your merge function is incorrect. It could be either (s1, s2) -> s1 + s2 or just Integer::sum if you'd rather use a method reference.

Another way to do it is without streams:

Map<String, Integer> studentMap = new LinkedHashMap<>();
studentList.forEach(s -> studentMap.merge(
                         s.getStudentName().toLowerCase(),
                         s.getMarks(),
                         Integer::sum));

This iterates the list of students and uses the Map.merge method to group them by name, summing their marks.