diff --git a/pom.xml b/pom.xml
index 10e5035e..37cbf712 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,8 +37,8 @@
maven-compiler-plugin
3.1
- 1.9
- 1.9
+ 1.8
+ 1.8
diff --git a/src/main/java/lambdasinaction/chap1/FilteringApples.java b/src/main/java/lambdasinaction/chap1/FilteringApples.java
index 51afc8cb..06a8c8dc 100644
--- a/src/main/java/lambdasinaction/chap1/FilteringApples.java
+++ b/src/main/java/lambdasinaction/chap1/FilteringApples.java
@@ -3,6 +3,8 @@
import java.util.*;
import java.util.function.Predicate;
+import static java.util.stream.Collectors.toList;
+
public class FilteringApples{
public static void main(String ... args){
@@ -31,6 +33,10 @@ public static void main(String ... args){
List weirdApples = filterApples(inventory, (Apple a) -> a.getWeight() < 80 ||
"brown".equals(a.getColor()));
System.out.println(weirdApples);
+
+ //stream api不用自己定义任何其他方法,来实现
+ List collect = inventory.stream().filter(apple -> "green".equals(apple.getColor())).collect(toList());
+ System.out.println(collect);
}
public static List filterGreenApples(List inventory){
diff --git a/src/main/java/lambdasinaction/chap10/OperationsWithOptional.java b/src/main/java/lambdasinaction/chap10/OperationsWithOptional.java
index d2940969..7315f02f 100644
--- a/src/main/java/lambdasinaction/chap10/OperationsWithOptional.java
+++ b/src/main/java/lambdasinaction/chap10/OperationsWithOptional.java
@@ -12,11 +12,11 @@ public static void main(String... args) {
System.out.println(max(empty(), of(5)));
Optional opt1 = of(5);
- Optional opt2 = opt1.or(() -> of(4));
+ // Optional opt2 = opt1.or(() -> of(4));
- System.out.println(
- of(5).or(() -> of(4))
- );
+// System.out.println(
+// of(5).or(() -> of(4))
+// );
}
public static final Optional max(Optional i, Optional j) {
diff --git a/src/main/java/lambdasinaction/chap10/OptionalMain.java b/src/main/java/lambdasinaction/chap10/OptionalMain.java
index dcd97792..1a16a413 100644
--- a/src/main/java/lambdasinaction/chap10/OptionalMain.java
+++ b/src/main/java/lambdasinaction/chap10/OptionalMain.java
@@ -1,8 +1,6 @@
package lambdasinaction.chap10;
-import java.util.*;
-
-import static java.util.stream.Collectors.toSet;
+import java.util.Optional;
public class OptionalMain {
@@ -13,12 +11,12 @@ public String getCarInsuranceName(Optional person) {
.orElse("Unknown");
}
- public Set getCarInsuranceNames(List persons) {
- return persons.stream()
- .map(Person::getCar)
- .map(optCar -> optCar.flatMap(Car::getInsurance))
- .map(optInsurance -> optInsurance.map(Insurance::getName))
- .flatMap(Optional::stream)
- .collect(toSet());
- }
+// public Set getCarInsuranceNames(List persons) {
+// return persons.stream()
+// .map(Person::getCar)
+// .map(optCar -> optCar.flatMap(Car::getInsurance))
+// .map(optInsurance -> optInsurance.map(Insurance::getName))
+// .flatMap(Optional::stream)
+// .collect(toSet());
+// }
}
diff --git a/src/main/java/lambdasinaction/chap2/RunTest.java b/src/main/java/lambdasinaction/chap2/RunTest.java
new file mode 100644
index 00000000..197dac9d
--- /dev/null
+++ b/src/main/java/lambdasinaction/chap2/RunTest.java
@@ -0,0 +1,14 @@
+package lambdasinaction.chap2;
+
+/**
+ * Created by tangm on 2017/7/1.
+ */
+public class RunTest {
+ public static void main(String[] args) {
+
+ new Thread(() -> {
+ System.out.println("hello word");
+ }).run();
+
+ }
+}
diff --git a/src/main/java/lambdasinaction/chap4/Dish.java b/src/main/java/lambdasinaction/chap4/Dish.java
index 96307644..a73dbed5 100644
--- a/src/main/java/lambdasinaction/chap4/Dish.java
+++ b/src/main/java/lambdasinaction/chap4/Dish.java
@@ -35,7 +35,7 @@ public enum Type { MEAT, FISH, OTHER }
@Override
public String toString() {
- return name;
+ return "【"+name+","+calories+","+vegetarian+","+type+"】";
}
public static final List menu =
diff --git a/src/main/java/lambdasinaction/chap6/CollectorHarness.java b/src/main/java/lambdasinaction/chap6/CollectorHarness.java
index 8370be16..087ff8a3 100644
--- a/src/main/java/lambdasinaction/chap6/CollectorHarness.java
+++ b/src/main/java/lambdasinaction/chap6/CollectorHarness.java
@@ -6,7 +6,7 @@ public class CollectorHarness {
public static void main(String[] args) {
//System.out.println("Partitioning done in: " + execute(PartitionPrimeNumbers::partitionPrimes) + " msecs");
- System.out.println("Partitioning done in: " + execute(PartitionPrimeNumbers::partitionPrimesWithCustomCollector) + " msecs" );
+// System.out.println("Partitioning done in: " + execute(PartitionPrimeNumbers::partitionPrimesWithCustomCollector) + " msecs" );
}
private static long execute(Consumer primePartitioner) {
diff --git a/src/main/java/lambdasinaction/chap6/Grouping.java b/src/main/java/lambdasinaction/chap6/Grouping.java
index 9105cc80..0c257f0d 100644
--- a/src/main/java/lambdasinaction/chap6/Grouping.java
+++ b/src/main/java/lambdasinaction/chap6/Grouping.java
@@ -1,9 +1,11 @@
package lambdasinaction.chap6;
-import java.util.*;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Set;
import static java.util.stream.Collectors.*;
-import static lambdasinaction.chap6.Dish.dishTags;
import static lambdasinaction.chap6.Dish.menu;
public class Grouping {
@@ -13,8 +15,8 @@ enum CaloricLevel { DIET, NORMAL, FAT };
public static void main(String ... args) {
System.out.println("Dishes grouped by type: " + groupDishesByType());
System.out.println("Dish names grouped by type: " + groupDishNamesByType());
- System.out.println("Dish tags grouped by type: " + groupDishTagsByType());
- System.out.println("Caloric dishes grouped by type: " + groupCaloricDishesByType());
+// System.out.println("Dish tags grouped by type: " + groupDishTagsByType());
+// System.out.println("Caloric dishes grouped by type: " + groupCaloricDishesByType());
System.out.println("Dishes grouped by caloric level: " + groupDishesByCaloricLevel());
System.out.println("Dishes grouped by type and caloric level: " + groupDishedByTypeAndCaloricLevel());
System.out.println("Count dishes in groups: " + countDishesInGroups());
@@ -32,14 +34,14 @@ private static Map> groupDishNamesByType() {
return menu.stream().collect(groupingBy(Dish::getType, mapping(Dish::getName, toList())));
}
- private static Map> groupDishTagsByType() {
- return menu.stream().collect(groupingBy(Dish::getType, flatMapping(dish -> dishTags.get( dish.getName() ).stream(), toSet())));
- }
+// private static Map> groupDishTagsByType() {
+// return menu.stream().collect(groupingBy(Dish::getType, flatMapping(dish -> dishTags.get( dish.getName() ).stream(), toSet())));
+// }
- private static Map> groupCaloricDishesByType() {
-// return menu.stream().filter(dish -> dish.getCalories() > 500).collect(groupingBy(Dish::getType));
- return menu.stream().collect(groupingBy(Dish::getType, filtering(dish -> dish.getCalories() > 500, toList())));
- }
+// private static Map> groupCaloricDishesByType() {
+//// return menu.stream().filter(dish -> dish.getCalories() > 500).collect(groupingBy(Dish::getType));
+// return menu.stream().collect(groupingBy(Dish::getType, filtering(dish -> dish.getCalories() > 500, toList())));
+// }
private static Map> groupDishesByCaloricLevel() {
return menu.stream().collect(
diff --git a/src/main/java/lambdasinaction/chap6/PartitionPrimeNumbers.java b/src/main/java/lambdasinaction/chap6/PartitionPrimeNumbers.java
index 69d7c4ca..a14d9302 100644
--- a/src/main/java/lambdasinaction/chap6/PartitionPrimeNumbers.java
+++ b/src/main/java/lambdasinaction/chap6/PartitionPrimeNumbers.java
@@ -1,17 +1,16 @@
package lambdasinaction.chap6;
-import java.util.*;
-import java.util.function.*;
-import java.util.stream.*;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.IntStream;
-import static java.util.stream.Collectors.*;
-import static java.util.stream.Collector.Characteristics.*;
+import static java.util.stream.Collectors.partitioningBy;
public class PartitionPrimeNumbers {
public static void main(String ... args) {
System.out.println("Numbers partitioned in prime and non-prime: " + partitionPrimes(100));
- System.out.println("Numbers partitioned in prime and non-prime: " + partitionPrimesWithCustomCollector(100));
+// System.out.println("Numbers partitioned in prime and non-prime: " + partitionPrimesWithCustomCollector(100));
}
@@ -26,15 +25,15 @@ public static boolean isPrime(int candidate) {
.noneMatch(i -> candidate % i == 0);
}
- public static Map> partitionPrimesWithCustomCollector(int n) {
- return IntStream.rangeClosed(2, n).boxed().collect(new PrimeNumbersCollector());
- }
+// public static Map> partitionPrimesWithCustomCollector(int n) {
+// return IntStream.rangeClosed(2, n).boxed().collect(new PrimeNumbersCollector());
+// }
- public static boolean isPrime(List primes, Integer candidate) {
- double candidateRoot = Math.sqrt((double) candidate);
- //return takeWhile(primes, i -> i <= candidateRoot).stream().noneMatch(i -> candidate % i == 0);
- return primes.stream().takeWhile(i -> i <= candidateRoot).noneMatch(i -> candidate % i == 0);
- }
+// public static boolean isPrime(List primes, Integer candidate) {
+// double candidateRoot = Math.sqrt((double) candidate);
+// //return takeWhile(primes, i -> i <= candidateRoot).stream().noneMatch(i -> candidate % i == 0);
+// return primes.stream().takeWhile(i -> i <= candidateRoot).noneMatch(i -> candidate % i == 0);
+// }
/*
public static List takeWhile(List list, Predicate p) {
int i = 0;
@@ -47,60 +46,60 @@ public static List takeWhile(List list, Predicate p) {
return list;
}
*/
- public static class PrimeNumbersCollector
- implements Collector>, Map>> {
+// public static class PrimeNumbersCollector
+// implements Collector>, Map>> {
- @Override
- public Supplier