Lambda Expressions
匿名类 Lambdas
new Thread(new Runnable() { @Override public void run() { System.out.print("hi"); }}).run();
new Thread(() -> System.out.print("hi")).run();
Lambda Expressions
Multiset<Integer> lengths = HashMultiset.create( FluentIterable.from(strings) .filter(new Predicate<String>() { public boolean apply(String string) { return CharMatcher.JAVA_UPPER_CASE.matchesAllOf(string); } }) .transform(new Function<String, Integer>() { public Integer apply(String string) { return string.length(); } }));
匿名类 Lambdas
Multiset<Integer> lengths = HashMultiset.create( FluentIterable.from(strings) .filter(string -> CharMatcher.JAVA_UPPER_CASE.matchesAllOf(string)) .transform(string -> string.length()));
Stream API
Common StreamList<Transaction> groceryTransactions = new Arraylist<>();for(Transaction t: transactions){ if(t.getType() == Transaction.GROCERY){ groceryTransactions.add(t); }}Collections.sort(groceryTransactions, new Comparator(){ public int compare(Transaction t1, Transaction t2){ return t2.getValue().compareTo(t1.getValue()); }});List<Integer> transactionIds = new ArrayList<>();for(Transaction t: groceryTransactions){ transactionsIds.add(t.getId());}
List<Integer> transactionsIds = transactions.stream() .filter(t -> t.getType() == Transaction.GROCERY) .sorted(comparing(Transaction::getValue).reversed()) .map(Transaction::getId) .collect(toList());
Method Referencespublic static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16); List<Integer> primeNumbers = numbers.stream().filter((x) -> isPrime(x)).collect(Collectors.toList());
System.out.println("Prime Numbers are " + primeNumbers);}
public static boolean isPrime(int number) {/*…*/
}
public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16); List<Integer> primeNumbers = numbers.stream().filter(ReferenceToStaticMethodExample::isPrime).collect(Collectors.toList());
System.out.println("Prime Numbers are " + primeNumbers);}
Method References
public static void main(String args[]){ List names = new ArrayList();
names.add("Mahesh"); names.add("Suresh"); names.add("Ramesh"); names.add("Naresh"); names.add("Kalpesh");
names.forEach(System.out::println);}
public static void main(String args[]){ List names = new ArrayList();
names.add("Mahesh"); names.add("Suresh"); names.add("Ramesh"); names.add("Naresh"); names.add("Kalpesh");
for (Object name : names){ System.out.print(name); }}
Others- Date & Time
//Current DateLocalDate today = LocalDate.now();System.out.println("Current Date=" + today);
//Current TimeLocalTime time = LocalTime.now();System.out.println("Current Time=" + time);
//Current DateLocalDateTime today = LocalDateTime.now();System.out.println("Current DateTime=" + today);
Others – default & static
interface FunctionalDefaultMethods { void method(); //common
default void defaultMethod() { System.out.print(this); //default method }
static void staticMethod() { // static method }}
Others – Repeatable@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)public @interface Filters { Filter[] value();}
@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Repeatable(Filters.class)public @interface Filter { String value();}
@Filter("filter1")@Filter("filter2")public interface Filterable {}
Others – Param Name
class ParameterNames { public static void main(String[] args) throws Exception { Method method = ParameterNames.class.getMethod("main", String[].class); for (final Parameter parameter : method.getParameters()) { System.out.println("Parameter: " + parameter.getName()); } }}
编译时增加 – parameters
Recommended