/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import static java.util.stream.Collectors.groupingBy;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main
(String[] args
) { List<Employee> listEmployee = new ArrayList<>();
listEmployee.add(new Employee("Ravi", "IT", true));
listEmployee.add(new Employee("Tom", "Sales", false));
listEmployee.add(new Employee("Kanna", "IT", false));
Map
<String, List
<Employee
>> employeePerDep
= listEmployee.
stream().
collect(groupingBy
(Employee
::getDepartement
)); System.
out.
printf("%10s %10s %10s %10s\n",
"Departement",
"total",
"active",
"inactive");
for (Map.
Entry<String, List
<Employee
>> entry
: employeePerDep.
entrySet()) { int total = entry.getValue().size();
long active = entry.getValue().stream().filter(Employee::isActive).count();
System.
out.
printf("%-10s %10d %10s %10s\n", entry.
getKey(), total, active, total
- active
); }
}
}
class Employee {
private boolean active;
this.name = name;
this.departement = sector;
this.active = active;
}
return name;
}
public void setName
(String name
) { this.name = name;
}
boolean isActive() {
return active;
}
void setActive(boolean active) {
this.active = active;
}
return departement;
}
void setDepartement
(String departement
) { this.departement = departement;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgppbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKaW1wb3J0IGphdmEudXRpbC5MaXN0OwppbXBvcnQgamF2YS51dGlsLk1hcDsKCmltcG9ydCBzdGF0aWMgamF2YS51dGlsLnN0cmVhbS5Db2xsZWN0b3JzLmdyb3VwaW5nQnk7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgTGlzdDxFbXBsb3llZT4gbGlzdEVtcGxveWVlID0gbmV3IEFycmF5TGlzdDw+KCk7CiAgICAgICAgbGlzdEVtcGxveWVlLmFkZChuZXcgRW1wbG95ZWUoIlJhdmkiLCAiSVQiLCB0cnVlKSk7CiAgICAgICAgbGlzdEVtcGxveWVlLmFkZChuZXcgRW1wbG95ZWUoIlRvbSIsICJTYWxlcyIsIGZhbHNlKSk7CiAgICAgICAgbGlzdEVtcGxveWVlLmFkZChuZXcgRW1wbG95ZWUoIkthbm5hIiwgIklUIiwgZmFsc2UpKTsKCiAgICAgICAgTWFwPFN0cmluZywgTGlzdDxFbXBsb3llZT4+IGVtcGxveWVlUGVyRGVwID0gbGlzdEVtcGxveWVlLnN0cmVhbSgpLmNvbGxlY3QoZ3JvdXBpbmdCeShFbXBsb3llZTo6Z2V0RGVwYXJ0ZW1lbnQpKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50ZigiJTEwcyAlMTBzICUxMHMgJTEwc1xuIiwgIkRlcGFydGVtZW50IiwgInRvdGFsIiwgImFjdGl2ZSIsICJpbmFjdGl2ZSIpOwoKICAgICAgICBmb3IgKE1hcC5FbnRyeTxTdHJpbmcsIExpc3Q8RW1wbG95ZWU+PiBlbnRyeSA6IGVtcGxveWVlUGVyRGVwLmVudHJ5U2V0KCkpIHsKICAgICAgICAgICAgaW50IHRvdGFsID0gZW50cnkuZ2V0VmFsdWUoKS5zaXplKCk7CiAgICAgICAgICAgIGxvbmcgYWN0aXZlID0gZW50cnkuZ2V0VmFsdWUoKS5zdHJlYW0oKS5maWx0ZXIoRW1wbG95ZWU6OmlzQWN0aXZlKS5jb3VudCgpOwogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50ZigiJS0xMHMgJTEwZCAlMTBzICUxMHNcbiIsIGVudHJ5LmdldEtleSgpLCB0b3RhbCwgYWN0aXZlLCB0b3RhbCAtIGFjdGl2ZSk7CiAgICAgICAgfQogICAgfQp9CgpjbGFzcyBFbXBsb3llZSB7CiAgICBwcml2YXRlIFN0cmluZyBuYW1lOwogICAgcHJpdmF0ZSBTdHJpbmcgZGVwYXJ0ZW1lbnQ7CiAgICBwcml2YXRlIGJvb2xlYW4gYWN0aXZlOwoKICAgIEVtcGxveWVlKFN0cmluZyBuYW1lLCBTdHJpbmcgc2VjdG9yLCBib29sZWFuIGFjdGl2ZSkgewogICAgICAgIHRoaXMubmFtZSA9IG5hbWU7CiAgICAgICAgdGhpcy5kZXBhcnRlbWVudCA9IHNlY3RvcjsKICAgICAgICB0aGlzLmFjdGl2ZSA9IGFjdGl2ZTsKICAgIH0KCiAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7CiAgICAgICAgcmV0dXJuIG5hbWU7CiAgICB9CgogICAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSkgewogICAgICAgIHRoaXMubmFtZSA9IG5hbWU7CiAgICB9CgogICAgYm9vbGVhbiBpc0FjdGl2ZSgpIHsKICAgICAgICByZXR1cm4gYWN0aXZlOwogICAgfQoKICAgIHZvaWQgc2V0QWN0aXZlKGJvb2xlYW4gYWN0aXZlKSB7CiAgICAgICAgdGhpcy5hY3RpdmUgPSBhY3RpdmU7CiAgICB9CgogICAgU3RyaW5nIGdldERlcGFydGVtZW50KCkgewogICAgICAgIHJldHVybiBkZXBhcnRlbWVudDsKICAgIH0KCiAgICB2b2lkIHNldERlcGFydGVtZW50KFN0cmluZyBkZXBhcnRlbWVudCkgewogICAgICAgIHRoaXMuZGVwYXJ0ZW1lbnQgPSBkZXBhcnRlbWVudDsKICAgIH0KfQ==