diff --git a/src/main/java/com/howtodoinjava/core/collections/cursors/AlternateNextAndPrevious.java b/src/main/java/com/howtodoinjava/core/collections/cursors/AlternateNextAndPrevious.java new file mode 100644 index 0000000..6f2997b --- /dev/null +++ b/src/main/java/com/howtodoinjava/core/collections/cursors/AlternateNextAndPrevious.java @@ -0,0 +1,28 @@ +package com.howtodoinjava.core.collections.cursors; + +import java.util.ArrayList; +import java.util.List; +import java.util.ListIterator; + +public class AlternateNextAndPrevious { + + public static void main(String[] args) { + + List numbers = new ArrayList<>(); + + for (int i = 1; i <= 5; i++) { numbers.add(i); } + + ListIterator iterator = numbers.listIterator(); + + System.out.println(iterator.next()); //1 + + System.out.println(iterator.next()); //2 + + System.out.println(iterator.previous()); //2 + + System.out.println(iterator.next()); //2 + + System.out.println(iterator.previous()); //2 + + } +} diff --git a/src/main/java/com/howtodoinjava/core/collections/cursors/ConcurrentModification.java b/src/main/java/com/howtodoinjava/core/collections/cursors/ConcurrentModification.java new file mode 100644 index 0000000..7c5d05c --- /dev/null +++ b/src/main/java/com/howtodoinjava/core/collections/cursors/ConcurrentModification.java @@ -0,0 +1,36 @@ +package com.howtodoinjava.core.collections.cursors; + +import java.util.ArrayList; +import java.util.ConcurrentModificationException; +import java.util.List; +import java.util.ListIterator; + +public class ConcurrentModification { + + public static void main(String[] args) { + + try { + + List numbers = new ArrayList<>(); + + for (int i = 1; i <= 5; i++) { numbers.add(i); } + + ListIterator iterator = numbers.listIterator(); + + System.out.println(iterator.next()); + + numbers.add(0, 10); + + System.out.println(iterator.next()); + + } catch (ConcurrentModificationException exception) { + + System.out.println("Attempted to the modify collection"); + + System.out.println(exception); + + } + + } + +} diff --git a/src/main/java/com/howtodoinjava/core/collections/cursors/EnumerationCursor.java b/src/main/java/com/howtodoinjava/core/collections/cursors/EnumerationCursor.java new file mode 100644 index 0000000..c143ca2 --- /dev/null +++ b/src/main/java/com/howtodoinjava/core/collections/cursors/EnumerationCursor.java @@ -0,0 +1,24 @@ +package com.howtodoinjava.core.collections.cursors; + +import java.util.Enumeration; +import java.util.Vector; + +public class EnumerationCursor { + + public static void main(String[] args) { + + Vector vector = new Vector<>(); + + for(int i=1;i<=10;i++){ vector.addElement(i); } + + Enumeration enumeration = vector.elements(); + + while(enumeration.hasMoreElements()){ + + System.out.print(enumeration.nextElement() + " "); + + } + + } + +} diff --git a/src/main/java/com/howtodoinjava/core/collections/cursors/IteratorCursor.java b/src/main/java/com/howtodoinjava/core/collections/cursors/IteratorCursor.java new file mode 100644 index 0000000..83ba9e6 --- /dev/null +++ b/src/main/java/com/howtodoinjava/core/collections/cursors/IteratorCursor.java @@ -0,0 +1,27 @@ +package com.howtodoinjava.core.collections.cursors; + +import java.util.*; + +public class IteratorCursor { + + public static void main(String[] args) { + + Set immutableSet = Set.of(1,2,3,4,5,6,7,8,9,10); // Immutable Set + Set elements = new HashSet<>(immutableSet); // Mutable Set + + Iterator iterator = elements.iterator(); + + int num; + + while (iterator.hasNext()){ + + if ((num = iterator.next()) == 5){ iterator.remove(); } + + else { System.out.print(num + " "); } + } + + System.out.println("\n"+elements); + + } + +} diff --git a/src/main/java/com/howtodoinjava/core/collections/cursors/ListIteratorCursor.java b/src/main/java/com/howtodoinjava/core/collections/cursors/ListIteratorCursor.java new file mode 100644 index 0000000..386382f --- /dev/null +++ b/src/main/java/com/howtodoinjava/core/collections/cursors/ListIteratorCursor.java @@ -0,0 +1,48 @@ +package com.howtodoinjava.core.collections.cursors; + +import java.util.ArrayList; +import java.util.List; +import java.util.ListIterator; + +public class ListIteratorCursor { + + public static void main(String[] args) { + + List immutableList = List.of(1, 2, 3, 4, 5); + List numbers = new ArrayList<>(immutableList); + + ListIterator iterator = numbers.listIterator(); + + int num; + + while (iterator.hasNext()) { + + num = iterator.next(); + + if (num == 1) { iterator.remove(); } + + else if (num == 5){ iterator.set(50); } + + } + + iterator.add(6); + + System.out.println(numbers); + + while (iterator.hasPrevious()) { + + num = iterator.previous(); + + if (num == 6) { iterator.remove(); } + + else if (num == 50){ iterator.set(5);} + + } + + iterator.add(1); + + System.out.println(numbers); + + } + +} diff --git a/src/main/java/com/howtodoinjava/core/collections/cursors/SpliteratorCursor.java b/src/main/java/com/howtodoinjava/core/collections/cursors/SpliteratorCursor.java new file mode 100644 index 0000000..b1f5fca --- /dev/null +++ b/src/main/java/com/howtodoinjava/core/collections/cursors/SpliteratorCursor.java @@ -0,0 +1,29 @@ +package com.howtodoinjava.core.collections.cursors; + +import java.util.List; +import java.util.Spliterator; +import java.util.stream.Stream; + +public class SpliteratorCursor { + + public static void main(String[] args) { + + List big = Stream.generate(() -> "Hello").limit(30000).toList(); + + Spliterator split = big.spliterator(); // 30000 + + System.out.println(split.estimateSize()); + + Spliterator split1 = split.trySplit(); + + System.out.println(split.estimateSize()); // 15000 + + System.out.println(split1.estimateSize()); // 15000 + + new Thread(() -> split.forEachRemaining(elem -> System.out.println("TH1 " + elem))).start(); + + new Thread(() -> split1.forEachRemaining(elem -> System.out.println("TH2 " + elem))).start(); + + } + +} diff --git a/src/main/java/com/howtodoinjava/core/collections/cursors/SpliteratorEstimateSize.java b/src/main/java/com/howtodoinjava/core/collections/cursors/SpliteratorEstimateSize.java new file mode 100644 index 0000000..2633369 --- /dev/null +++ b/src/main/java/com/howtodoinjava/core/collections/cursors/SpliteratorEstimateSize.java @@ -0,0 +1,25 @@ +package com.howtodoinjava.core.collections.cursors; + +import java.util.List; +import java.util.Spliterator; +import java.util.stream.Stream; + +public class SpliteratorEstimateSize { + + public static void main(String[] args) { + + List big = Stream.generate(() -> "Hello").limit(10).toList(); + + Spliterator split = big.spliterator(); + + split.tryAdvance(System.out::println); + split.tryAdvance(System.out::println); + split.tryAdvance(System.out::println); + split.tryAdvance(System.out::println); + split.tryAdvance(System.out::println); + + System.out.println(split.estimateSize()); + + } + +}