Skip to content

Commit 55700d1

Browse files
committed
update partitioning examples
1 parent 56ee0b9 commit 55700d1

File tree

5 files changed

+14
-11
lines changed

5 files changed

+14
-11
lines changed

src/main/java/lambdasinaction/chap10/BestPriceFinderMain.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ public class BestPriceFinderMain {
1111
private static BestPriceFinder bestPriceFinder = new BestPriceFinder();
1212

1313
public static void main(String[] args) {
14-
execute("sequential", () -> bestPriceFinder.findPriceSequential("myPhone"));
15-
execute("parallel", () -> bestPriceFinder.findPriceParallel("myPhone"));
14+
//execute("sequential", () -> bestPriceFinder.findPriceSequential("myPhone"));
15+
//execute("parallel", () -> bestPriceFinder.findPriceParallel("myPhone"));
1616
execute("composed CompletableFuture", () -> bestPriceFinder.findPrice("myPhone"));
17-
bestPriceFinder.printPricesStream();
17+
//bestPriceFinder.printPricesStream();
1818
}
1919

2020
private static void execute(String msg, Supplier<List<String>> s) {

src/main/java/lambdasinaction/chap10/Util.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ public class Util {
1111
private static final DecimalFormat formatter = new DecimalFormat("#.##", new DecimalFormatSymbols(Locale.US));
1212

1313
public static void delay() {
14-
//int delay = 1000;
15-
int delay = 500 + RANDOM.nextInt(2000);
14+
int delay = 1000;
15+
//int delay = 500 + RANDOM.nextInt(2000);
1616
try {
1717
Thread.sleep(delay);
1818
} catch (InterruptedException e) {

src/main/java/lambdasinaction/chap5/CollectorHarness.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
public class CollectorHarness {
88

99
public static void main(String[] args) {
10-
System.out.println("Partitioning done in: " + execute(PartitionPrimeNumbers::partitionPrimes) + " msecs");
10+
//System.out.println("Partitioning done in: " + execute(PartitionPrimeNumbers::partitionPrimes) + " msecs");
1111
System.out.println("Partitioning done in: " + execute(PartitionPrimeNumbers::partitionPrimesWithCustomCollector) + " msecs" );
1212
}
1313

@@ -18,6 +18,7 @@ private static long execute(Consumer<Integer> primePartitioner) {
1818
primePartitioner.accept(1_000_000);
1919
long duration = (System.nanoTime() - start) / 1_000_000;
2020
if (duration < fastest) fastest = duration;
21+
System.out.println("done in " + duration);
2122
}
2223
return fastest;
2324
}

src/main/java/lambdasinaction/chap5/PartitionPrimeNumbers.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,24 @@ public static void main(String ... args) {
1717
}
1818

1919
public static Map<Boolean, List<Integer>> partitionPrimes(int n) {
20-
return Stream.iterate(2, i -> i + 1).limit(n-1)
20+
return IntStream.rangeClosed(2, n).boxed()
2121
.collect(partitioningBy(candidate -> isPrime(candidate)));
2222
}
2323

2424
public static boolean isPrime(int candidate) {
25-
return Stream.iterate(2, i -> i + 1)
25+
return IntStream.rangeClosed(2, candidate-1)
2626
.limit((long) Math.floor(Math.sqrt((double) candidate)) - 1)
2727
.noneMatch(i -> candidate % i == 0);
2828
}
2929

3030
public static Map<Boolean, List<Integer>> partitionPrimesWithCustomCollector(int n) {
31-
return Stream.iterate(2, i -> i + 1).limit(n-1).collect(new PrimeNumbersCollector());
31+
return IntStream.rangeClosed(2, n).boxed().collect(new PrimeNumbersCollector());
3232
}
3333

3434
public static boolean isPrime(List<Integer> primes, Integer candidate) {
3535
double candidateRoot = Math.sqrt((double) candidate);
36-
return takeWhile(primes, i -> i <= candidateRoot).stream().noneMatch(i -> candidate % i == 0);
36+
return primes.stream().filter(p -> p < candidateRoot).noneMatch(p -> candidate % p == 0);
37+
//return takeWhile(primes, i -> i <= candidateRoot).stream().noneMatch(i -> candidate % i == 0);
3738
}
3839

3940
public static <A> List<A> takeWhile(List<A> list, Predicate<A> p) {

src/main/java/lambdasinaction/chap5/Partitioning.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.util.function.*;
55
import java.util.stream.*;
66

7+
import static java.util.Comparator.comparingInt;
78
import static java.util.stream.Collectors.*;
89
import static lambdasinaction.chap5.Dish.menu;
910

@@ -27,7 +28,7 @@ private static Object mostCaloricPartitionedByVegetarian() {
2728
return menu.stream().collect(
2829
partitioningBy(Dish::isVegetarian,
2930
collectingAndThen(
30-
reducing((d1, d2) -> d1.getCalories() > d2.getCalories() ? d1 : d2),
31+
maxBy(comparingInt(Dish::getCalories)),
3132
Optional::get)));
3233
}
3334
}

0 commit comments

Comments
 (0)