Java 8 coding interview questions and solutions.
1. Count total occurrence each char in a string.
pubic static void printEachCharOccurrence(String s){
[Link]([Link]([Link]().split("")).
collect([Link]([Link](),[Link]())));
//Or
[Link]([Link]().mapToObj(c->(char)c).
collect([Link]([Link](),[Link]())));
}
2. Count total occurrence each char in a Array list of string.
public static void validateSameChars(List<String> list){
[Link]([Link]([Link]().collect([Link]()).split(
"")).
collect([Link]([Link](),[Link]())));
}
3. Sort list of string increasing order by length
public statis void sortStringByLength(String s){
[Link]([Link]([Link](" ")).
sorted([Link](String::length)).collect([Link]()));
}
4. Reverse each string in a sentence.
public static void reverseEachWord(String s){
String s2= [Link]([Link](" ")).map(e->new StringBuffer(e).reverse()).
collect([Link](" "));
}
5. Remove duplicates from a list.
public static void removeDuplicates(List<String> list){
[Link]().collect([Link]());
}
6. Remove duplicates from two lists.
public static void removeDuplicates(List<String> l1, List<String> l2){
[Link]([Link](),[Link]()).collect([Link]());
}
7. Verify given Strings are Anagram.
public static void anagramTest(String s1, String s2){
String s3=[Link]([Link]().split("")).sorted().
collect([Link]());
String s4= [Link]([Link]().split("")).sorted().
collect([Link]());
if([Link](s4)) {
[Link]("its Anagram.");
} else{
[Link]("Given String are not anagram.");
}
}
8. Validate same chars in a given array list of strings.
//Validate same chars in a given array list of strings.
//Or group by same chars in a array list of strings
public static void validateSameChars(List<String> list){
Map<String, Double> map = new HashMap<>();
[Link]().forEach(e->{
double d=[Link]([Link]("")).map(i->(int)[Link]()[0]).
reduce(0,(s1,s2)->s1+s2).doubleValue();
[Link](e,d);
});
Map<Double,List<String>> map2 = [Link]().stream().
collect([Link]([Link]::getValue,[Link]([Link]::get
Key, [Link]())));
[Link](map2);
}
9. Get last element of an ArrayList. Or Get the nth element of an ArrayList.
public static void getNthElement(List<String>list, int n){
if(n==0){
s=[Link]()-1;
}
[Link]([Link]().skip(n).findFirst().get());
}
10. Find the first non-repeated character in a string.
public static void getNonRepeatedChar(String s){
Map<String, Long> map= [Link]([Link]("")).
collect([Link]([Link](),
LinkedHashMap::new, [Link]()));
[Link]([Link]().stream().filter(e->[Link]()==1).
findFirst().get());
}
11. Find the first repeated character in a string.
public static void getFirstRepectedChars(String s) {
[Link](s);
Map<String, Long> map= [Link]([Link]("")).
collect([Link]([Link](),
LinkedHashMap::new, [Link]()));
[Link]([Link]().stream().
filter(entry -> [Link]() > 1).map(entry -> [Link]()).
findFirst().get());
}
12 Find Subarray with given sum | Set 1 (Non-negative Numbers)
Given an array arr[] of non-negative integers and an integer sum, find a subarray
that adds to a given sum. There may be more than one subarray with sum as the given
sum, print first such subarray.
/*Examples: Input: arr[] = {1, 4, 20, 3, 10, 5}, sum = 33
Output: Sum found between indexes 2 and 4
Explanation: Sum of elements between indices 2 and 4 is 20 + 3 + 10 = 33
Input: arr[] = {1, 4}, sum = 0
Output: No subarray found
Explanation: There is no subarray with 0 sum
*/
public static int [] getSubindexArray(int ary[], int sum){
Map<Integer, Integer> intMap= new HashMap<>();
int currentSum=0;
for(int i=0;i<[Link];i++) {
currentSum+=arr[i];
if(currentSum==sum) {
return new int[] {0,1};
}
if([Link](currentSum-sum)) {
return new int[] {[Link](currentSum-sum)+1,i};
}
[Link](currentSum,i);
}
return new int[] {};
}
}
Now using Employee Object
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
@Setter@Getter
@ToString
@EqualsAndHashCode
@Builder
public class Employee {
private String empName;
private int empId;
private int age;
private String gender;
private int salary;
private String address1;
private String address2;
private String zipCode;
private String dept;
}
//This code is used for Auto generate 10 Random employees with different data.
import [Link];
import [Link];
import [Link];
public class ModelHelper {
private static int count=0;
private static List<Employee>arrayList = new ArrayList<Employee>();
public static List<Employee> getEmployeeList(){
if(count==0) {
for(int i=0; i<10; i++) {
int j= randomInt(3);
if(j%2==0)
[Link](getNewMEmp());
else
[Link](getNewFEmp());
}
}
return arrayList;
}
private static Employee getNewMEmp() {
return
[Link]().empId(randomInt(5)).empName(random()).salary(randomInt(6)).gende
r("M").age(randomInt(2)).
address1(random()).address2(random()).zipCode(random()).dept(getDeptId()).build();
}
private static Employee getNewFEmp() {
return
[Link]().empId(randomInt(5)).empName(random()).salary(randomInt(6)).gende
r("F").age(randomInt(2)).
address1(random()).address2(random()).zipCode(random()).dept(getDeptId()).build();
}
static final String AB = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
static final String AB1="abcdefghijklmnopqrstuvwxyz";
private static String random() {
//Generate random name
StringBuilder salt = new StringBuilder();
Random rnd = new Random();
[Link]([Link]([Link]([Link]())));
int length=[Link](8);
if(length<3)
length+=3;
while ([Link]() < length) { // length of the random string.
int index = [Link]([Link]());
[Link]([Link](index));
}
String saltStr = [Link]();
return saltStr;
}
private static int randomInt() {
//Generate random number
String SALTCHARS = "123456789";
StringBuilder salt = new StringBuilder();
Random rnd = new Random();
while ([Link]() < 4) { // length of the random string.
int index = [Link]([Link]());
[Link]([Link](index));
}
String saltStr = [Link]();
return [Link](saltStr);
}
private static int randomInt(int s) {//Generate random int
String SALTCHARS = "123456789";
StringBuilder salt = new StringBuilder();
Random rnd = new Random();
while ([Link]() < s) {
int index = [Link]([Link]());
[Link]([Link](index));
}
String saltStr = [Link]();
return [Link](saltStr);
}
private static String getDeptId() {//Generate Random Deptid
int i= randomInt(9);
if(i%3==0) {
return "A";
} else if(i%3==1) {
return"B";
} else {
return "C";
}
}
}
1. Find all male and female employees.
public static void findAllMaleFemaleEmployees(){
List<Employee> empL = [Link]();
[Link](empL);
[Link]("Find number of M and F employees");
[Link]([Link]().collect([Link](e-
>[Link](),[Link]())));
[Link]([Link]().collect([Link](e-
>[Link]())));
[Link]([Link]().collect([Link](e-
>[Link](),[Link]())));
[Link]("\n\n");
}
2. Find all employees in each department.
public static void findNumberOFEmpsFromEachDept() {
List <Employee> empL = [Link]();
[Link](empL);
[Link]("number of employees in each department");
[Link]([Link]().collect([Link](e-
>[Link](),[Link]())));
[Link]("\n\n");
}
3. Find Youngest and Oldest employee.
public static void findYongestEmp() {
List <Employee> empL = [Link]();
[Link](empL);
[Link]("Find Youngest employee from from org");
[Link]([Link]().min([Link](Employee::getAge)));
[Link]("\n\n");
}
public static void findOldestEmp() {
List <Employee> empL = [Link]();
[Link](empL);
[Link]("Find senior most employee");
[Link]([Link]().max([Link](Employee::getAge)));
[Link]("\n\n");
}
4. Find the Average age in each department.
public static void findAvgSalarMndF() {
List <Employee> empL = [Link]();
[Link]([Link]().collect([Link](e-
>[Link]())));
[Link]("the average salary of male and female employees");
[Link]([Link]().collect([Link](e-
>[Link](),[Link](Employee::getSalary))));
[Link]("\n\n");
}
5. Find the Highest paid employee.
public static void findHightPaid() {
List <Employee> empL = [Link]();
[Link]("highest paid employee in the organization ");
[Link]([Link]().max([Link](e->[Link]())));
[Link]("\n\n");
}
6. Find Average Salary in Male and Female employees.
public static void findAvgSalarMndF() {
List <Employee> empL = [Link]();
[Link]([Link]().collect([Link](e-
>[Link]())));
[Link]("the average salary of male and female employees");
[Link]([Link]().collect([Link](e-
>[Link](),[Link](Employee::getSalary))));
[Link]("\n\n");
}
7. Sort Employees by age and Names.
public static void employeeSortByAgeAndNames() {
List<Employee> empL = [Link]();
[Link]("\n\n");
[Link](empL);
[Link]("Sort employees by age and namnes");
[Link]([Link]().sorted([Link](Employee::getAge).then
Comparing(Employee::getEmpName)).collect([Link]()));
[Link]("\n\n");
}