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
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 RUclips channel for learner Lot's of respect sir..
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()
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();
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
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 ❤🎉
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.😊
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()));
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
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
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 :)
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.
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);
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?
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()); }
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
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 RUclips channel for learner
Lot's of respect sir..
Glad to hear this Amol 😍. Congratulations for your achievements and keep learning 😃
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()
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 RUclips is Broker
@@Javatechie No youtube is kafka server
@@Javatechie
Much needed, thank you.
Best ever java coding stream 8 video .
Simple and to the point coverage of different stream related questions. Thanks for your efforts.
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
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 .
Most Interviewed questions on Stream APIs. Best channel out there as I said earlier also. Keep doing this great work man. Thanks a lot❤
Really Useful and covered most of the repeatated questions on Java 8 interviews...Thanks Basant😍
Excellent Video Basant. Keep Interviews Videos like this coming.
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
Great Video 🙌Thanks for sharing 👍
Please keep sharing similar coding challenges on Java8+
wow excellent.... Thank you very much @Java Techie, many times asked this questions & now I can answer.
Thanks, just what I needed for my upcoming interview.
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
Great Explanation Sir, Thank you so much!
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
Max length str solution ----> Arrays.asList(strArray).stream().max(Comparator.comparing(String::length)).get();
Please provide more examples.. It really helps!!.. Continue doing this as a series.. 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.😊
very very good and useful bro, this is called spoon feeding 😄😍😍😍 love it
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
thank you for teaching how to use stream API effectively
Nice one quick recall before the interview.
It's just perfect. Thank you. Please keep going.
hey stream dont use your brain and use hashmap...listen to basant sir :) explaining with humor really nice sir. Thanks
🤪🤪🤪🤪
my guruji is always the best🙏🙏🙏
Ur content are always unique , Very Helpful set of Question and answers
I am waiting from long time. Thanks
Very informative and useful video for interview. Thanks
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
Very informative 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 🤗
Hi Sir, This video is very much useful. please make such video more frequent. 🙏
Need more such coding videos ... coz most of the people only uploading theory videos not practical .
Very informative and helpful
Very nice explained
superb explanation.
Simply Great video brother, Thank you
Appreciated 😊🙏
Thanks 👍 please make one more videos on coding questions
thank you very useful lecture.
Informatic session
Good video.very useful for coding interviews.
Thank You Java Techie 😊
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 .❤️
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
very useful sir
good video
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 :)
Very useful video 🙏please make more videos!
Very useful
1st question was asked to me in TechMahindra interview.
For what much experience
Thanks Basant
Thanks for this video ❤
Nice Video..!!...Appreciate if you can you please create a playlist of Java where time complexity and space complexity is maintained.
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.
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);
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
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
really helpful, thank you
Wow thanks
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
Thanks 😊
THANK YOU SO MUCH
Hi, java 20 just released
Sir please make video on checkmarks for intellij
Okay i will do that
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
if Array like this- Integer arr[] = {10, 5, 8, 22, 30, 30, 2}; then how to find second largest element of this array?
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());
}
Good day
🙏💯💯
@Javatechie
Please create a java 8 code to find sub string with maximum repeating characters
guruji please do one real time project guruji please so that we can survive in industry
Okay i will do that buddy
Please make videos on Apache Kafka
Please check out my Kafka playlist
How to find missing numbers in array using streams ?
What is identity method use case of plz ??
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
Bro why did u take entryset here ?
Bro how l is first non rpt .. bcoz c is non repeat first
Latest versions of Java please.
i want use of redis
Bro groupby simple definition plz
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