Skip to content

Commit 1144bd9

Browse files
Merge pull request lokeshgupta1981#10 from ThakkarChandresh/master
Added : java cursors
2 parents a1e249f + 7cb66cc commit 1144bd9

File tree

7 files changed

+217
-0
lines changed

7 files changed

+217
-0
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.howtodoinjava.core.collections.cursors;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
import java.util.ListIterator;
6+
7+
public class AlternateNextAndPrevious {
8+
9+
public static void main(String[] args) {
10+
11+
List<Integer> numbers = new ArrayList<>();
12+
13+
for (int i = 1; i <= 5; i++) { numbers.add(i); }
14+
15+
ListIterator<Integer> iterator = numbers.listIterator();
16+
17+
System.out.println(iterator.next()); //1
18+
19+
System.out.println(iterator.next()); //2
20+
21+
System.out.println(iterator.previous()); //2
22+
23+
System.out.println(iterator.next()); //2
24+
25+
System.out.println(iterator.previous()); //2
26+
27+
}
28+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.howtodoinjava.core.collections.cursors;
2+
3+
import java.util.ArrayList;
4+
import java.util.ConcurrentModificationException;
5+
import java.util.List;
6+
import java.util.ListIterator;
7+
8+
public class ConcurrentModification {
9+
10+
public static void main(String[] args) {
11+
12+
try {
13+
14+
List<Integer> numbers = new ArrayList<>();
15+
16+
for (int i = 1; i <= 5; i++) { numbers.add(i); }
17+
18+
ListIterator<Integer> iterator = numbers.listIterator();
19+
20+
System.out.println(iterator.next());
21+
22+
numbers.add(0, 10);
23+
24+
System.out.println(iterator.next());
25+
26+
} catch (ConcurrentModificationException exception) {
27+
28+
System.out.println("Attempted to the modify collection");
29+
30+
System.out.println(exception);
31+
32+
}
33+
34+
}
35+
36+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.howtodoinjava.core.collections.cursors;
2+
3+
import java.util.Enumeration;
4+
import java.util.Vector;
5+
6+
public class EnumerationCursor {
7+
8+
public static void main(String[] args) {
9+
10+
Vector<Integer> vector = new Vector<>();
11+
12+
for(int i=1;i<=10;i++){ vector.addElement(i); }
13+
14+
Enumeration<Integer> enumeration = vector.elements();
15+
16+
while(enumeration.hasMoreElements()){
17+
18+
System.out.print(enumeration.nextElement() + " ");
19+
20+
}
21+
22+
}
23+
24+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.howtodoinjava.core.collections.cursors;
2+
3+
import java.util.*;
4+
5+
public class IteratorCursor {
6+
7+
public static void main(String[] args) {
8+
9+
Set<Integer> immutableSet = Set.of(1,2,3,4,5,6,7,8,9,10); // Immutable Set
10+
Set<Integer> elements = new HashSet<>(immutableSet); // Mutable Set
11+
12+
Iterator<Integer> iterator = elements.iterator();
13+
14+
int num;
15+
16+
while (iterator.hasNext()){
17+
18+
if ((num = iterator.next()) == 5){ iterator.remove(); }
19+
20+
else { System.out.print(num + " "); }
21+
}
22+
23+
System.out.println("\n"+elements);
24+
25+
}
26+
27+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.howtodoinjava.core.collections.cursors;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
import java.util.ListIterator;
6+
7+
public class ListIteratorCursor {
8+
9+
public static void main(String[] args) {
10+
11+
List<Integer> immutableList = List.of(1, 2, 3, 4, 5);
12+
List<Integer> numbers = new ArrayList<>(immutableList);
13+
14+
ListIterator<Integer> iterator = numbers.listIterator();
15+
16+
int num;
17+
18+
while (iterator.hasNext()) {
19+
20+
num = iterator.next();
21+
22+
if (num == 1) { iterator.remove(); }
23+
24+
else if (num == 5){ iterator.set(50); }
25+
26+
}
27+
28+
iterator.add(6);
29+
30+
System.out.println(numbers);
31+
32+
while (iterator.hasPrevious()) {
33+
34+
num = iterator.previous();
35+
36+
if (num == 6) { iterator.remove(); }
37+
38+
else if (num == 50){ iterator.set(5);}
39+
40+
}
41+
42+
iterator.add(1);
43+
44+
System.out.println(numbers);
45+
46+
}
47+
48+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.howtodoinjava.core.collections.cursors;
2+
3+
import java.util.List;
4+
import java.util.Spliterator;
5+
import java.util.stream.Stream;
6+
7+
public class SpliteratorCursor {
8+
9+
public static void main(String[] args) {
10+
11+
List<String> big = Stream.generate(() -> "Hello").limit(30000).toList();
12+
13+
Spliterator<String> split = big.spliterator(); // 30000
14+
15+
System.out.println(split.estimateSize());
16+
17+
Spliterator<String> split1 = split.trySplit();
18+
19+
System.out.println(split.estimateSize()); // 15000
20+
21+
System.out.println(split1.estimateSize()); // 15000
22+
23+
new Thread(() -> split.forEachRemaining(elem -> System.out.println("TH1 " + elem))).start();
24+
25+
new Thread(() -> split1.forEachRemaining(elem -> System.out.println("TH2 " + elem))).start();
26+
27+
}
28+
29+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.howtodoinjava.core.collections.cursors;
2+
3+
import java.util.List;
4+
import java.util.Spliterator;
5+
import java.util.stream.Stream;
6+
7+
public class SpliteratorEstimateSize {
8+
9+
public static void main(String[] args) {
10+
11+
List<String> big = Stream.generate(() -> "Hello").limit(10).toList();
12+
13+
Spliterator<String> split = big.spliterator();
14+
15+
split.tryAdvance(System.out::println);
16+
split.tryAdvance(System.out::println);
17+
split.tryAdvance(System.out::println);
18+
split.tryAdvance(System.out::println);
19+
split.tryAdvance(System.out::println);
20+
21+
System.out.println(split.estimateSize());
22+
23+
}
24+
25+
}

0 commit comments

Comments
 (0)