Hi Bro..Thanks a lot..watched ur videos and really more helpful Two alternate ways to find the second highest number : Without using boxed() 1. Integer secondHighest1 = Arrays.stream(num).sorted().skip(num.length - 2).findFirst().getAsInt(); With using boxed() 2. Optional secondHighest2 = Arrays.stream(num).boxed().sorted().skip(num.length - 2).findFirst(); and then print secondHighest2.get() condition -> array should not be empty and must contain at least 2 elements
34:30 using map() is redundant List oneStartingNumberLists = Arrays.stream(nums) .boxed() .filter(n -> n.toString().startsWith("1")) .collect(Collectors.toList()); Since it is boxed() meaning Integer can be converted into string using toString()
Because of you sir i cracked couple interviews, when I started looking for a new job, I just watching your video again and revising the concept One of the best TH-cam channel for learner Lot's of respect sir..
Thanks @javatechie excellent content, but for this problem, this is much simpler //find longest string from given array String longestword = strings.stream().max((s1,s2)->s1.length()-s2.length()).get();
Your really doing amazing job, with no doubt about content I can trust n watch and get quality content , thank you and please continue doing this great job.😊
Awesome video, specially how he showed groupingBy() example and trick to solve many interview questions using this base technique where cosmetic modifications do wonders. The other thing is that he shown one example second largest/lowest and largest/lowest element in list but there is one additional thing is required which is to add distinct() keyword in stream otherwise if there are duplicate largest/lowest number then it would not work
For second highest number program, if int[] numbers = {5,9,11,2,8,21,21,1}; Then your logic will fail because...in reverse order it will show [21,21,11,9,8,5,1].....but second highest number is 11....but it will show 21. I think we need to add one more logic for remove duplicacy again then only it will show 11. int[] numbers = {5,9,11,2,8,21,21,1}; Integer SecondHighestElement = Arrays.stream(numbers).boxed() .collect(Collectors.toSet()).stream() .sorted(Comparator.reverseOrder()) .skip(1) .findFirst() .get(); System.out.println(SecondHighestElement); This will work. @Javatechie
21:10 As we're using an optional class can we use it like below String firstNonRepeat= Arrays.stream(name.split("")) .collect(Collectors.groupingBy(Function.identity(),LinkedHashMap::new,Collectors.counting())) .entrySet().stream() .filter(t -> t.getValue()==1) .map(Map.Entry::getKey) .findFirst() .orElse("No such element found");
That’s very well covered . 👏one request Basant if u can create videos on Microservices interview questions in detailed with examples will be helpful for many of us . Thanks for all work you are doing so far ❤🎉
Hello Basant, For unique elements we can use distinct() method function also right, correct me If I am wrong thinking. String name = "ILoveJavaTechie"; String[] split1 = name.split(""); Stream distinct = Arrays.stream(split1).distinct(); System.out.println("FoundDuplicate elements " + "" + distinct.collect(Collectors.toList()));
Sir they are saying not to use .Get() for optionals in reactive programs. Could u plz say whats the best way to handle optopnals in reactive way? ❤ you sir.
Practice a few more basic programs and then try to convert it to java 8 stream and play with it . You will explore more and more once you start playing with it . To be fair i don't use documentation to learn rather i tried to understand various scenarios by debugging source code
For Duplicate elements, we can use Collections.frequency(1,x)....By using this we can easily filter out duplicate. Then why you took map and all ? String s=input.toLowerCase(); char ch[]= s.toCharArray(); List list = new ArrayList(); for(char c:ch) { list.add(c); } list.stream().filter(t->Collections.frequency(1,x)>1).collect(Collectors.toList()).forEach(System.out::println); @Javatechie
Hi @Javatechie, in 3rd question for finding 1st non repeat element from the String, if we provide new LinkedHashMap() instead of LinkedHashMap constructor refferance its giving compilation error, Do u know why?
Second Highest, why cant be this... 25:00 Integer res = Arrays.stream(numbers).boxed().sorted().collect(Collectors.toList()).get(numbers.length - 2); Yes but your solution can handle exception FindFirst :)
How to find unique elements from 2 different list of integers. Element in one list should not present in other list. Request you to share the program to solve the above problem. Thanks
Thanks brother first question I faced in interview that time I failed to write 😔 ,do next video for core java when we go for java 8, because in system round they are asking time complexity and memory wasting , so which one is best loops or java8
Functional programming does not improve the performance of any system. it has the same complexity as writing a conventional imperative style of programming. The only advantage streams and functional programming generally present is, clean, concise and easy to read code.
@@bhavanisankar71 Functional style is better. Take a look at the 2 styles for removing duplicate below. You will see functional is easy to read and clean FOR LOOP FOR GETTING DUPLICATE public static List getDuplicateForLoopStyle(List strings){ Map maps = new HashMap(); for (String s : strings){ if (!maps.isEmpty() && maps.containsKey(s)){ int value = maps.get(s); maps.put(s,++value); }else maps.put(s,1); } List result = new ArrayList(); for (Map.Entry entry : maps.entrySet()){ if (entry.getValue() > 1){ result.add(entry.getKey()); } } return result; } FUNCTIONAL STYLE FOR GETTING DUPLICATE public static List getDuplicateFunctionalStyle(List strings){ return strings.stream() .collect(Collectors.groupingBy(x -> x, Collectors.counting())) .entrySet() .stream() .filter(x -> x.getValue() > 1) .map(Map.Entry::getKey) .collect(Collectors.toList()); }
Second question find duplicate elements from a string List strList = Arrays.asList(result); List dupElements = strList.stream().filter(e->Collections.frequency(strList, e)>1).distinct().collect(Collectors.toList()); System.out.println(dupElements);
You can achieve this using Java 8 streams. Here's a Java program that takes the input "a2b2c1d3" and produces the output "aabbcddd" using streams: ```java import java.util.stream.Collectors; public class Main { public static void main(String[] args) { String input = "a2b2c1d3"; String output = decodeString(input); System.out.println(output); } public static String decodeString(String input) { return input.chars() .mapToObj(c -> (char) c) .collect(StringBuilder::new, (sb, c) -> { if (Character.isLetter(c)) { sb.append(c); } if (Character.isDigit(c)) { int count = Character.getNumericValue(c); char prevChar = sb.charAt(sb.length() - 1); for (int i = 0; i < count - 1; i++) { sb.append(prevChar); } } }, StringBuilder::append) .toString(); } } ``` This program uses streams to process the input string character by character and builds the desired output. When you run it with the input "a2b2c1d3," it will produce the output "aabbcddd."
@@oludamilareolukotun9929 it's slower with streams unless you have a very large dataset in the array, like 1,000 elements, otherwise for loop and just using collections is faster performance
Hi All, Integer l = Arrays.asList(1, 41, 3, 31, 1).stream() .collect(Collectors.groupingBy(Function.identity(), Collectors.counting())).entrySet().stream() .filter(x -> x.getValue() == 1l).findFirst().get().getKey(); System.out.println(l); In this example I am expecting output 41 but getting 3 , why ?? ?????/
Im springboot coder. Plz continue these series. Highly appreciated your work.
Hi Bro..Thanks a lot..watched ur videos and really more helpful
Two alternate ways to find the second highest number :
Without using boxed()
1. Integer secondHighest1 = Arrays.stream(num).sorted().skip(num.length - 2).findFirst().getAsInt();
With using boxed()
2. Optional secondHighest2 = Arrays.stream(num).boxed().sorted().skip(num.length - 2).findFirst();
and then print secondHighest2.get()
condition -> array should not be empty and must contain at least 2 elements
34:30 using map() is redundant
List oneStartingNumberLists = Arrays.stream(nums)
.boxed()
.filter(n -> n.toString().startsWith("1"))
.collect(Collectors.toList());
Since it is boxed() meaning Integer can be converted into string using toString()
Because of you sir i cracked couple interviews, when I started looking for a new job, I just watching your video again and revising the concept
One of the best TH-cam channel for learner
Lot's of respect sir..
Glad to hear this Amol 😍. Congratulations for your achievements and keep learning 😃
Thanks @javatechie excellent content, but for this problem, this is much simpler //find longest string from given array
String longestword = strings.stream().max((s1,s2)->s1.length()-s2.length()).get();
Very useful lecture for beginners. Produce more such interview related coding questions which involves 0 to 6/7 years. We're here to consume 😋
Sure Aadi 😜. Then TH-cam is Broker
@@Javatechie No youtube is kafka server
@@Javatechie
Much needed, thank you.
Great Explanation Sir, Thank you so much!
very very good and useful bro, this is called spoon feeding 😄😍😍😍 love it
Best ever java coding stream 8 video .
It's just perfect. Thank you. Please keep going.
Simple and to the point coverage of different stream related questions. Thanks for your efforts.
Excellent Video Basant. Keep Interviews Videos like this coming.
Great Video 🙌Thanks for sharing 👍
Please keep sharing similar coding challenges on Java8+
Most Interviewed questions on Stream APIs. Best channel out there as I said earlier also. Keep doing this great work man. Thanks a lot❤
Your really doing amazing job, with no doubt about content I can trust n watch and get quality content , thank you and please continue doing this great job.😊
Really Useful and covered most of the repeatated questions on Java 8 interviews...Thanks Basant😍
my guruji is always the best🙏🙏🙏
wow excellent.... Thank you very much @Java Techie, many times asked this questions & now I can answer.
Very informative and helpful
Awesome video, specially how he showed groupingBy() example and trick to solve many interview questions using this base technique where cosmetic modifications do wonders. The other thing is that he shown one example second largest/lowest and largest/lowest element in list but there is one additional thing is required which is to add distinct() keyword in stream otherwise if there are duplicate largest/lowest number then it would not work
Thanks buddy 😀. Yes distinct is required you are right
Thanks, just what I needed for my upcoming interview.
For second highest number program,
if
int[] numbers = {5,9,11,2,8,21,21,1};
Then your logic will fail because...in reverse order it will show [21,21,11,9,8,5,1].....but second highest number is 11....but it will show 21.
I think we need to add one more logic for remove duplicacy again then only it will show 11.
int[] numbers = {5,9,11,2,8,21,21,1};
Integer SecondHighestElement = Arrays.stream(numbers).boxed()
.collect(Collectors.toSet()).stream()
.sorted(Comparator.reverseOrder())
.skip(1)
.findFirst()
.get();
System.out.println(SecondHighestElement);
This will work.
@Javatechie
thank you for teaching how to use stream API effectively
Very informative video
simple solution for finding nth largest string .String longestStrList=Arrays.stream(str1)
.sorted((s1, s2) -> s2.length() - s1.length())
.skip(n-1)
.findFirst()
.orElse("");
Awesome man let me try this .
thank you very useful lecture.
Very informative and useful video for interview. Thanks
Excellent ! Please bring in some more practical problem solving examples in JAVA. This is very rare high quality stuff
Thanks buddy i will
@@Javatechie Please create a java 8 code to find sub string with maximum repeating characters
Very nice explained
21:10 As we're using an optional class can we use it like below
String firstNonRepeat= Arrays.stream(name.split(""))
.collect(Collectors.groupingBy(Function.identity(),LinkedHashMap::new,Collectors.counting()))
.entrySet().stream()
.filter(t -> t.getValue()==1)
.map(Map.Entry::getKey)
.findFirst()
.orElse("No such element found");
Yes , when we use findFirst() it returns an optional container so we can use the orElse method.
Ur content are always unique , Very Helpful set of Question and answers
That’s very well covered . 👏one request Basant if u can create videos on Microservices interview questions in detailed with examples will be helpful for many of us . Thanks for all work you are doing so far ❤🎉
Yes buddy it's in a queue. Will upload within a month
@@Javatechieyes we are waiting
Nice one quick recall before the interview.
Appreciated 😊🙏
Good video.very useful for coding interviews.
Please provide more examples.. It really helps!!.. Continue doing this as a series.. thanks a lot
superb explanation.
I am waiting from long time. Thanks
Simply Great video brother, Thank you
Thanks for this video ❤
really it is great video for clear the interview and getting more knowledge by way of your teaching . Thank you very much sir.
Thanks Vinoth 🤗
Thank You Java Techie 😊
very useful sir
Need more such coding videos ... coz most of the people only uploading theory videos not practical .
Hi Sir, This video is very much useful. please make such video more frequent. 🙏
Hello Basant,
For unique elements we can use distinct() method function also right, correct me If I am wrong thinking.
String name = "ILoveJavaTechie";
String[] split1 = name.split("");
Stream distinct = Arrays.stream(split1).distinct();
System.out.println("FoundDuplicate elements " + "" + distinct.collect(Collectors.toList()));
This will give you a unique element not duplicate
Informatic session
Thanks 👍 please make one more videos on coding questions
really helpful, thank you
Very useful video 🙏please make more videos!
Thanks 😊
Very useful
hey stream dont use your brain and use hashmap...listen to basant sir :) explaining with humor really nice sir. Thanks
🤪🤪🤪🤪
Max length str solution ----> Arrays.asList(strArray).stream().max(Comparator.comparing(String::length)).get();
Great Video !! Very well explain each answer. Where can we find the source code,am not able to see in git repo
GitHub link mentioned in the video description
Sir they are saying not to use .Get() for optionals in reactive programs. Could u plz say whats the best way to handle optopnals in reactive way? ❤ you sir.
Check isEmpty or offNullable in optional then get the object that is the correct way to deal with optional
@@Javatechie thanks a lot sir.
How you are exploring these methods. What strategy you will use while exploring any new technology.
In my opinion documentation and there are also good books out there
Practice a few more basic programs and then try to convert it to java 8 stream and play with it .
You will explore more and more once you start playing with it .
To be fair i don't use documentation to learn rather i tried to understand various scenarios by debugging source code
Thanks Basant
good video
THANK YOU SO MUCH
For Duplicate elements, we can use Collections.frequency(1,x)....By using this we can easily filter out duplicate.
Then why you took map and all ?
String s=input.toLowerCase();
char ch[]= s.toCharArray();
List list = new ArrayList();
for(char c:ch)
{
list.add(c);
}
list.stream().filter(t->Collections.frequency(1,x)>1).collect(Collectors.toList()).forEach(System.out::println);
@Javatechie
But it is slowest one
🙏💯💯
Hi @Javatechie, in 3rd question for finding 1st non repeat element from the String, if we provide new LinkedHashMap() instead of LinkedHashMap constructor refferance its giving compilation error, Do u know why?
No we need to give a new object of LinkedIn hashmap . Pass as constructor or method reference it's upto you
Nice Video..!!...Appreciate if you can you please create a playlist of Java where time complexity and space complexity is maintained.
The purpose of boxed is not autoboxing
It just converts IntStream to Stream
Sir please make video on checkmarks for intellij
Okay i will do that
Will these be asked for 5 years candidate. Please share as well some other questions as well basant, thank you ❤❤❤ to your channel
Yes buddy programming questions is common for any experience
1st question was asked to me in TechMahindra interview.
For what much experience
Please continue the Kafka series .eagerly waiting for that .
Yes buddy next weekend i will upload 2 videos on Kafka.
@@Javatechie please complete the series . Waiting since long for your Kafka series .❤️
Second Highest, why cant be this... 25:00
Integer res = Arrays.stream(numbers).boxed().sorted().collect(Collectors.toList()).get(numbers.length - 2);
Yes but your solution can handle exception FindFirst :)
Because we don't need to collect to the list
As well as we can return default value like orelse
Hi, java 20 just released
Please make videos on Apache Kafka
Please check out my Kafka playlist
How to find unique elements from 2 different list of integers. Element in one list should not present in other list. Request you to share the program to solve the above problem. Thanks
Please share some sample inputs
What is identity method use case of plz ??
Bro why did u take entryset here ?
Wow thanks
Bro how l is first non rpt .. bcoz c is non repeat first
if Array like this- Integer arr[] = {10, 5, 8, 22, 30, 30, 2}; then how to find second largest element of this array?
@Javatechie
Please create a java 8 code to find sub string with maximum repeating characters
Good day
How to find missing numbers in array using streams ?
guruji please do one real time project guruji please so that we can survive in industry
Okay i will do that buddy
Bro groupby simple definition plz
Thanks brother first question I faced in interview that time I failed to write 😔 ,do next video for core java when we go for java 8, because in system round they are asking time complexity and memory wasting , so which one is best loops or java8
Functional programming does not improve the performance of any system. it has the same complexity as writing a conventional imperative style of programming. The only advantage streams and functional programming generally present is, clean, concise and easy to read code.
@@oludamilareolukotun9929 which one best
@@bhavanisankar71 Functional style is better. Take a look at the 2 styles for removing duplicate below. You will see functional is easy to read and clean
FOR LOOP FOR GETTING DUPLICATE
public static List getDuplicateForLoopStyle(List strings){
Map maps = new HashMap();
for (String s : strings){
if (!maps.isEmpty() && maps.containsKey(s)){
int value = maps.get(s);
maps.put(s,++value);
}else maps.put(s,1);
}
List result = new ArrayList();
for (Map.Entry entry : maps.entrySet()){
if (entry.getValue() > 1){
result.add(entry.getKey());
}
}
return result;
}
FUNCTIONAL STYLE FOR GETTING DUPLICATE
public static List getDuplicateFunctionalStyle(List strings){
return strings.stream()
.collect(Collectors.groupingBy(x -> x, Collectors.counting()))
.entrySet()
.stream()
.filter(x -> x.getValue() > 1)
.map(Map.Entry::getKey)
.collect(Collectors.toList());
}
Second question find duplicate elements from a string
List strList = Arrays.asList(result);
List dupElements = strList.stream().filter(e->Collections.frequency(strList, e)>1).distinct().collect(Collectors.toList());
System.out.println(dupElements);
Latest versions of Java please.
i want use of redis
How to remove adjacent duplicates of a string in java8
Try this
public static String removeAdjacentDuplicates(String input) {
return input.chars()
.mapToObj(c -> (char) c)
.collect(StringBuilder::new, (sb, c) -> {
if (sb.length() == 0 || sb.charAt(sb.length() - 1) != c) {
sb.append(c);
}
}, StringBuilder::append)
.toString();
}
@@Javatechie thank you for your response
String input= a2b2c1d3,
String output=aabbcddd
Anybody implement it
You can achieve this using Java 8 streams. Here's a Java program that takes the input "a2b2c1d3" and produces the output "aabbcddd" using streams:
```java
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
String input = "a2b2c1d3";
String output = decodeString(input);
System.out.println(output);
}
public static String decodeString(String input) {
return input.chars()
.mapToObj(c -> (char) c)
.collect(StringBuilder::new, (sb, c) -> {
if (Character.isLetter(c)) {
sb.append(c);
}
if (Character.isDigit(c)) {
int count = Character.getNumericValue(c);
char prevChar = sb.charAt(sb.length() - 1);
for (int i = 0; i < count - 1; i++) {
sb.append(prevChar);
}
}
}, StringBuilder::append)
.toString();
}
}
```
This program uses streams to process the input string character by character and builds the desired output. When you run it with the input "a2b2c1d3," it will produce the output "aabbcddd."
That's a nice explanation for java 8, but the exercises you are solving, best way is not to do them with streams, just a regular for loop
why not stream?
@@oludamilareolukotun9929 it's slower with streams unless you have a very large dataset in the array, like 1,000 elements, otherwise for loop and just using collections is faster performance
Then why companies are still using java8
Hi All, Integer l = Arrays.asList(1, 41, 3, 31, 1).stream()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting())).entrySet().stream()
.filter(x -> x.getValue() == 1l).findFirst().get().getKey();
System.out.println(l);
In this example I am expecting output 41 but getting 3 , why ?? ?????/
It will internally use a hashmap so we can't expect an insertion order . That's why I explained in video what to do check and apply
very helpful