Skip to content

Commit 890f3fc

Browse files
authored
Add files via upload
1 parent dd7bb53 commit 890f3fc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+1686
-0
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package StreamCollectors;
2+
3+
import java.util.Arrays;
4+
import java.util.stream.Stream;
5+
import java.util.List;
6+
7+
public class CollectStreamElementsToArray
8+
{
9+
public static void main(String[] args)
10+
{
11+
List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9,10);
12+
Stream<Integer> stream = list.stream();
13+
Integer[] evenNumbersArr = stream.filter(i -> i%2 == 0).toArray(Integer[]::new);
14+
for(Integer num:evenNumbersArr)
15+
{
16+
System.out.print(num+" ");
17+
}
18+
}
19+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package StreamCollectors;
2+
3+
import java.util.LinkedHashMap;
4+
import java.util.Map;
5+
import java.util.stream.Collectors;
6+
import java.util.stream.Stream;
7+
8+
class Student
9+
{
10+
private int ID;
11+
private String Name;
12+
Student(int ID,String Name)
13+
{
14+
this.ID=ID;
15+
this.Name=Name;
16+
}
17+
public int getID()
18+
{
19+
return ID;
20+
}
21+
public void setID(int iD)
22+
{
23+
ID = iD;
24+
}
25+
public String getName()
26+
{
27+
return Name;
28+
}
29+
public void setName(String name)
30+
{
31+
Name = name;
32+
}
33+
}
34+
35+
public class CollectStreamElementsToMap
36+
{
37+
public static void main(String[] args)
38+
{
39+
Stream<Student> stream = Stream.of(new Student(1,"Ram"),new Student(2,"Arjun"),new Student(3,"Kavi"),new Student(4,"Sanju"),new Student(5,"Ajay"));
40+
Map<Integer,String> map = stream.collect(Collectors.toMap(Student::getID,Student::getName));
41+
42+
System.out.println("Original Value:");
43+
for(Map.Entry<Integer,String> m:map.entrySet())
44+
{
45+
System.out.println(m.getKey()+" "+m.getValue());
46+
}
47+
48+
//sort map based on key
49+
Map<Integer,String> result1 = new LinkedHashMap<>();
50+
map.entrySet().stream()
51+
.sorted(Map.Entry.comparingByKey())
52+
.forEachOrdered(x -> result1.put(x.getKey(), x.getValue()));
53+
System.out.println("Sort By Key:" + result1);
54+
55+
//sort map based on Value
56+
Map<Integer,String> result2 = new LinkedHashMap<>();
57+
map.entrySet().stream()
58+
.sorted(Map.Entry.comparingByValue())
59+
.forEachOrdered(x -> result2.put(x.getKey(), x.getValue()));
60+
System.out.println("Sort By Value:" + result2);
61+
}
62+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package StreamCollectors;
2+
3+
import java.util.Arrays;
4+
import java.util.Collections;
5+
import java.util.List;
6+
import java.util.LinkedHashSet;
7+
import java.util.HashSet;
8+
import java.util.TreeSet;
9+
import java.util.Set;
10+
import java.util.stream.Collectors;
11+
import java.util.stream.Stream;
12+
13+
14+
public class CollectStreamElementsToSet
15+
{
16+
public static void main(String[] args)
17+
{
18+
19+
//convert stream to set
20+
List<Integer> list = Arrays.asList(1,2,3,4,5,4,5,8,9,10);
21+
Stream<Integer> stream = list.stream();
22+
23+
Set<Integer> set = stream.collect(Collectors.toSet());
24+
System.out.println(set);
25+
26+
//convert stream to an array and them array into set
27+
List<Integer> list1 = Arrays.asList(1,2,4,3,5,4,5,8,8,7);
28+
Stream<Integer> stream1 = list1.stream();
29+
30+
Integer[] arr = stream1.toArray(Integer[]::new);
31+
32+
//random order set
33+
Set<Integer> set1 = new HashSet<>();
34+
Collections.addAll(set1, arr);
35+
System.out.println(set1);
36+
37+
//insertion order set
38+
Set<Integer> set2 = new LinkedHashSet<>();
39+
Collections.addAll(set2, arr);
40+
System.out.println(set2);
41+
42+
//sorted order set
43+
Set<Integer> set3 = new TreeSet<>();
44+
Collections.addAll(set3, arr);
45+
System.out.println(set3);
46+
}
47+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package StreamCollectors;
2+
3+
import java.util.Arrays;
4+
import java.util.List;
5+
import java.util.stream.Stream;
6+
import java.util.stream.Collectors;
7+
8+
public class CollectsreamElementsToList
9+
{
10+
public static void main(String[] args)
11+
{
12+
List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9,10);
13+
Stream<Integer> stream = list.stream();
14+
15+
List<Integer> evenNumbersList = stream.collect(Collectors.toList());
16+
System.out.print(evenNumbersList);
17+
}
18+
}

StreamCollectors/SortingStream.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package StreamCollectors;
2+
3+
import java.util.Arrays;
4+
import java.util.Comparator;
5+
import java.util.List;
6+
import java.util.stream.Stream;
7+
8+
public class SortingStream
9+
{
10+
public static void main(String[] args)
11+
{
12+
//convert stream into set
13+
List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9,10);
14+
Stream<Integer> stream1 = list.stream();
15+
Stream<Integer> stream2 = list.stream();
16+
17+
//ascending sort
18+
stream1.sorted().forEach(e -> System.out.print(e+" "));
19+
System.out.println();
20+
21+
//descending sort
22+
stream2.sorted(Comparator.reverseOrder()).forEach(e -> System.out.print(e+" "));
23+
System.out.println();
24+
}
25+
}

StreamExamples/DistinctByKeys.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package StreamExamples;
2+
3+
import java.util.Arrays;
4+
import java.util.List;
5+
import java.util.Map;
6+
import java.util.concurrent.ConcurrentHashMap;
7+
import java.util.function.Function;
8+
import java.util.function.Predicate;
9+
import java.util.stream.Collectors;
10+
import java.util.stream.Stream;
11+
import StudentClass.Student;
12+
13+
public class DistinctByKeys
14+
{
15+
public static void main(String[] args)
16+
{
17+
Stream.of(new Student(1,"Ram"),new Student(2,"Arjun"),new Student(3,"Kavi"),new Student(4,"Sanju"),new Student(5,"Ajay"))
18+
.filter(distinctByKeys(Student::getID, Student::getName))
19+
.collect(Collectors.toList()).forEach(System.out::println);
20+
System.out.println();
21+
}
22+
23+
private static <T> Predicate<T> distinctByKeys(Function<? super T, ?>... keyExtractors)
24+
{
25+
final Map<List<?>, Boolean> seen = new ConcurrentHashMap<>();
26+
return t ->
27+
{
28+
final List<?> keys = Arrays.stream(keyExtractors)
29+
.map(ke -> ke.apply(t))
30+
.collect(Collectors.toList());
31+
return seen.putIfAbsent(keys, Boolean.TRUE) == null;
32+
};
33+
}
34+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package StreamExamples;
2+
3+
import java.util.Map;
4+
import java.util.concurrent.ConcurrentHashMap;
5+
import java.util.function.Function;
6+
import java.util.function.Predicate;
7+
import java.util.stream.Collectors;
8+
import java.util.stream.Stream;
9+
import StudentClass.CustomKey;
10+
import StudentClass.Student;
11+
12+
public class DistinctByMultipleProperties
13+
{
14+
public static void main(String[] args)
15+
{
16+
Stream.of(new Student(1,"Ram"),new Student(2,"Arjun"),new Student(3,"Kavi"),new Student(4,"Sanju"),new Student(5,"Ajay"))
17+
.filter(distinctByKey(CustomKey::new))
18+
.collect(Collectors.toList()).forEach(System.out::println);
19+
System.out.println();
20+
21+
}
22+
public static <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor)
23+
{
24+
Map<Object, Boolean> seen = new ConcurrentHashMap<>();
25+
return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
26+
}
27+
}

StreamExamples/FindLastElement.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package StreamExamples;
2+
3+
import java.util.Arrays;
4+
import java.util.stream.Stream;
5+
6+
public class FindLastElement
7+
{
8+
public static void main(String[] args)
9+
{
10+
11+
//using stream.reduce()
12+
Stream<Integer> stream1 = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9).stream();
13+
Integer lastElement1 = stream1.reduce((first, second) -> second).orElse(-1);
14+
System.out.println(lastElement1);
15+
16+
//or
17+
18+
Stream<Integer> emptyStream = Stream.empty();
19+
Integer lastElement2 = emptyStream.reduce((first, second) -> second)
20+
.orElseThrow(() -> new IllegalStateException("no last element"));
21+
System.out.println(lastElement2);
22+
23+
}
24+
}

StreamExamples/FixedLengthStream.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package StreamExamples;
2+
3+
import java.util.stream.Stream;
4+
5+
public class FixedLengthStream
6+
{
7+
public static void main(String[] args)
8+
{
9+
Stream.Builder<Integer> streamBuilder = Stream.builder();
10+
streamBuilder.accept(1);
11+
streamBuilder.accept(2);
12+
streamBuilder.accept(3);
13+
streamBuilder.accept(4);
14+
streamBuilder.accept(5);
15+
streamBuilder.build().forEach(e->System.out.print(e+" "));
16+
}
17+
}

StreamExamples/InfiniteStream.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package StreamExamples;
2+
3+
import java.util.List;
4+
import java.util.Random;
5+
import java.util.stream.Collectors;
6+
import java.util.stream.Stream;
7+
import StudentClass.Student;
8+
9+
public class InfiniteStream
10+
{
11+
public static void main(String[] args)
12+
{
13+
14+
//Infinite stream of random numbers
15+
List<Integer> randomNumbers = Stream.generate(() -> (new Random()).nextInt(100))
16+
.limit(10).collect(Collectors.toList());
17+
System.out.println(randomNumbers);
18+
19+
//infinite stream of Custom Objects
20+
List<Student> students = Stream.generate(Student::create)
21+
.limit(5).collect(Collectors.toList());
22+
for(Student student:students)
23+
{
24+
System.out.println("Student ID : "+student.getID()+" , Student Name : "+student.getName());
25+
}
26+
}
27+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package StreamExamples;
2+
3+
import java.util.function.IntPredicate;
4+
import java.util.stream.Collectors;
5+
import java.util.stream.IntStream;
6+
7+
public class IntPredicateExamples
8+
{
9+
public static void main(String[] args)
10+
{
11+
12+
//Java IntPredicate interface is a predicate of one int-valued argument.
13+
//It can be considered an operator or function that returns a value either true or false based on certain evaluation on the argument int value.
14+
//IntPredicate is a functional interface whose functional method is boolean test(int a).
15+
16+
IntPredicate isOdd = argument -> argument % 2 == 1;
17+
18+
19+
//Use predicate directly
20+
System.out.println(isOdd.test(9)); //true
21+
System.out.println(isOdd.test(10)); //false
22+
23+
24+
//Use predicate in filters
25+
IntStream.range(1, 10).filter(isOdd).boxed()
26+
.collect(Collectors.toList()).forEach(e->System.out.print(e+" "));
27+
System.out.println();
28+
29+
30+
//complex IntPredicate -> using logical AND, OR, etc...
31+
IntPredicate isOddNumber = argument -> argument % 2 == 1;
32+
IntStream.range(1, 20).filter(isOddNumber.and(IntPredicateExamples::isPrime))
33+
.boxed()
34+
.collect(Collectors.toList()).forEach(e->System.out.print(e+" "));
35+
36+
}
37+
38+
public static boolean isPrime(int i)
39+
{
40+
IntPredicate isDivisible = index -> i % index == 0;
41+
return i > 1 && IntStream.range(2, i).noneMatch(isDivisible);
42+
}
43+
}

0 commit comments

Comments
 (0)