Java 8 - complex programs asked in interviews
package com.dpq.movie.ratings.datalayer.dao.impl;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class RatingDaoImpl {
publicstaticvoidmain(String[] args) {
List<String> names = Arrays.asList(“Deepak”,“Deepak”,“Kuhu”,“Kuhu”,“Garv”);
System.out.println(names.stream().collect(Collectors.toMap(k->k, v->1, Integer::sum)));
List<Student> student = Arrays.asList(new RatingDaoImpl().new Student(“Math”,98),
new RatingDaoImpl().new Student(“Science”,98), new RatingDaoImpl().new Student(“English”,98),new RatingDaoImpl().new Student(“Hindi”,98));
System.out.println(student.stream().map(e->e.getMarks()).collect(Collectors.summingInt(e->e.intValue())));
List<StudentDetails> studentDetails = Arrays.asList(new RatingDaoImpl().new StudentDetails(“Deepak”,“Math”,98),
new RatingDaoImpl().new StudentDetails(“Deepak”,“Science”,98),
new RatingDaoImpl().new StudentDetails(“Deepak”,“English”,98),
new RatingDaoImpl().new StudentDetails(“Deepak”,“Hindi”,98),
new RatingDaoImpl().new StudentDetails(“Bobby”,“Math”,100),
new RatingDaoImpl().new StudentDetails(“Bobby”,“Science”,100),
new RatingDaoImpl().new StudentDetails(“Bobby”,“English”,100),
new RatingDaoImpl().new StudentDetails(“Bobby”,“Hindi”,98));
System.out.println(studentDetails.stream().collect(Collectors.toMap(k->k.getName(), k->k.getMarks(),Integer::sum)));
}
class StudentDetails{
privateString name;
privateString subject;
privateInteger marks;
public StudentDetails(String name,String subject, Integer marks) {
super();
this.name=name;
this.subject = subject;
this.marks = marks;
}
public String getSubject() {
return subject;
}
public Integer getMarks() {
returnmarks;
}
public String getName() {
returnname;
}
}
class Student{
privateString subject;
privateInteger marks;
public Student(String subject, Integer marks) {
super();
this.subject = subject;
this.marks = marks;
}
public String getSubject() {
return subject;
}
public Integer getMarks() {
returnmarks;
}
@Override
public String toString() {
return “Student [subject=” + subject + “, marks=” + marks + “]”;
}}}
Output:
{Kuhu=2, Deepak=2, Garv=1}
392
{Bobby=398, Deepak=392}