adding spliterator
This commit is contained in:
22
java-8/spliterator/ForEachRemainingExample.java
Normal file
22
java-8/spliterator/ForEachRemainingExample.java
Normal file
@@ -0,0 +1,22 @@
|
||||
package data;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Spliterator;
|
||||
|
||||
public class ForEachRemainingExample {
|
||||
|
||||
public static void main(String[] args) {
|
||||
List<Integer> values = new ArrayList<>();
|
||||
|
||||
values.add(1);
|
||||
values.add(2);
|
||||
values.add(3);
|
||||
|
||||
Spliterator<Integer> integerSpliterator = values.spliterator();
|
||||
integerSpliterator.forEachRemaining(System.out::println);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
15
java-8/spliterator/Student.java
Normal file
15
java-8/spliterator/Student.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package data;
|
||||
|
||||
public class Student {
|
||||
String name;
|
||||
int age;
|
||||
|
||||
public Student(String name, int age) {
|
||||
this.name = name;
|
||||
this.age = age;
|
||||
}
|
||||
|
||||
public int getAge() {
|
||||
return age;
|
||||
}
|
||||
}
|
||||
67
java-8/spliterator/StudentSpliterator.java
Normal file
67
java-8/spliterator/StudentSpliterator.java
Normal file
@@ -0,0 +1,67 @@
|
||||
package data;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Spliterator;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class StudentSpliterator implements Spliterator<Student> {
|
||||
private final List<Student> studentList;
|
||||
|
||||
private int endIndex;
|
||||
private int startIndex;
|
||||
|
||||
public StudentSpliterator(List<Student> studentList) {
|
||||
this(studentList, 0, studentList.size());
|
||||
}
|
||||
|
||||
private StudentSpliterator(List<Student> studentList, int startIndex, int endIndex) {
|
||||
this.studentList = studentList;
|
||||
this.startIndex = startIndex;
|
||||
this.endIndex = endIndex;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean tryAdvance(Consumer<? super Student> action) {
|
||||
if (getSize() > 0) {
|
||||
action.accept(studentList.get(startIndex));
|
||||
startIndex++;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Spliterator<Student> trySplit() {
|
||||
|
||||
if (getSize() == 1) {
|
||||
return null;
|
||||
}
|
||||
|
||||
int newStartIndex;
|
||||
int newEndIndex = endIndex;
|
||||
|
||||
if (getSize() % 2 == 0) {
|
||||
newStartIndex = startIndex + getSize() / 2;
|
||||
this.endIndex -= getSize() / 2;
|
||||
} else {
|
||||
newStartIndex = startIndex + getSize() / 2 + 1;
|
||||
this.endIndex -= getSize() / 2;
|
||||
}
|
||||
return new StudentSpliterator(studentList, newStartIndex, newEndIndex);
|
||||
}
|
||||
|
||||
|
||||
private int getSize() {
|
||||
return endIndex - startIndex;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long estimateSize() {
|
||||
return studentList.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int characteristics() {
|
||||
return NONNULL;
|
||||
}
|
||||
}
|
||||
22
java-8/spliterator/TryAdvanceExample.java
Normal file
22
java-8/spliterator/TryAdvanceExample.java
Normal file
@@ -0,0 +1,22 @@
|
||||
package data;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Spliterator;
|
||||
|
||||
public class TryAdvanceExample {
|
||||
|
||||
public static void main(String[] args){
|
||||
List<String> values = new ArrayList<>();
|
||||
|
||||
values.add("one");
|
||||
values.add("two");
|
||||
values.add("three");
|
||||
|
||||
Spliterator<String> stringSpliterator = values.spliterator();
|
||||
|
||||
while(stringSpliterator.tryAdvance(System.out::println)){
|
||||
//inside while loop
|
||||
}
|
||||
}
|
||||
}
|
||||
44
java-8/spliterator/TrySplitExample.java
Normal file
44
java-8/spliterator/TrySplitExample.java
Normal file
@@ -0,0 +1,44 @@
|
||||
package data;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Spliterator;
|
||||
|
||||
public class TrySplitExample {
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
List<String> values = new ArrayList<>();
|
||||
|
||||
values.add("one");
|
||||
values.add("two");
|
||||
values.add("three");
|
||||
values.add("four");
|
||||
values.add("five");
|
||||
values.add("six");
|
||||
values.add("seven");
|
||||
values.add("eight");
|
||||
values.add("nine");
|
||||
values.add("ten");
|
||||
|
||||
Spliterator<String> firstSpliterator = values.spliterator();
|
||||
Spliterator<String> secondSpliterator = firstSpliterator.trySplit();
|
||||
Spliterator<String> thirdSpliterator = firstSpliterator.trySplit();
|
||||
|
||||
System.out.println("firstSpliterator : ");
|
||||
while (firstSpliterator.tryAdvance(System.out::println)) {
|
||||
//inside while loop
|
||||
}
|
||||
|
||||
System.out.println("secondSpliterator : ");
|
||||
while (secondSpliterator.tryAdvance(System.out::println)) {
|
||||
//inside while loop
|
||||
}
|
||||
|
||||
System.out.println("thirdSpliterator : ");
|
||||
while (thirdSpliterator.tryAdvance(System.out::println)) {
|
||||
//inside while loop
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user