Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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<Integer> numbers = new ArrayList<>();

for (int i = 1; i <= 5; i++) { numbers.add(i); }

ListIterator<Integer> 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

}
}
Original file line number Diff line number Diff line change
@@ -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<Integer> numbers = new ArrayList<>();

for (int i = 1; i <= 5; i++) { numbers.add(i); }

ListIterator<Integer> 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);

}

}

}
Original file line number Diff line number Diff line change
@@ -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<Integer> vector = new Vector<>();

for(int i=1;i<=10;i++){ vector.addElement(i); }

Enumeration<Integer> enumeration = vector.elements();

while(enumeration.hasMoreElements()){

System.out.print(enumeration.nextElement() + " ");

}

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.howtodoinjava.core.collections.cursors;

import java.util.*;

public class IteratorCursor {

public static void main(String[] args) {

Set<Integer> immutableSet = Set.of(1,2,3,4,5,6,7,8,9,10); // Immutable Set
Set<Integer> elements = new HashSet<>(immutableSet); // Mutable Set

Iterator<Integer> 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);

}

}
Original file line number Diff line number Diff line change
@@ -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<Integer> immutableList = List.of(1, 2, 3, 4, 5);
List<Integer> numbers = new ArrayList<>(immutableList);

ListIterator<Integer> 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);

}

}
Original file line number Diff line number Diff line change
@@ -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<String> big = Stream.generate(() -> "Hello").limit(30000).toList();

Spliterator<String> split = big.spliterator(); // 30000

System.out.println(split.estimateSize());

Spliterator<String> 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();

}

}
Original file line number Diff line number Diff line change
@@ -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<String> big = Stream.generate(() -> "Hello").limit(10).toList();

Spliterator<String> 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());

}

}