我正在玩Java 8 lambdas来轻松过滤集合.但我没有找到一种简洁的方法来将结果作为新列表检索到同一语句中.到目前为止,这是我最简洁的方法:
List<Long> sourceLongList = Arrays.asList(1L, 10L, 50L, 80L, 100L, 120L, 133L, 333L);
List<Long> targetLongList = new ArrayList<>();
sourceLongList.stream().filter(l -> l > 100).forEach(targetLongList::add);
Run Code Online (Sandbox Code Playgroud)
网上的例子没有回答我的问题,因为他们停止而没有生成新的结果列表.必须有一个更简洁的方式.我本来期望的是,Stream类有方法为toList(),toSet(),...
有没有办法targetLongList可以直接由第三行分配变量?
我正在玩Java8 lambda表达式.作为一个例子,我然后尝试总结列表中包含的年龄:
import java.util.Arrays;
import java.util.List;
public class Person {
public static void main(String[] args) {
List<Person> persons = Arrays.asList(new Person("FooBar", 12), new Person("BarFoo", 16));
Integer sumOfAges = persons.stream().map(Person::getAge).sum();
System.out.println("summedUpAges: " + sumOfAges);
}
private final String name;
private final Integer age;
public Person(String name, Integer age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public Integer getAge() {
return age;
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试使用以下java编译器编译此代码段时:
openjdk version "1.8.0-ea"
OpenJDK Runtime Environment (build 1.8.0-ea-lambda-night
OpenJDK …Run Code Online (Sandbox Code Playgroud) 是否已经有一种首选方法如何在maven项目中使用traceur或Babel(名为6to5)将ECMAScript6代码转换为ECMAScript5?我已经搜索过网络而没有任何成功.
以下程序是否保证在将来的java版本中生成具有相同内容和排序的列表?
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class Test {
public static void main(String[] args) {
List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C", "D"));
Collections.shuffle(list, new Random(42));
}
}
Run Code Online (Sandbox Code Playgroud)
java.util.Random该类的javadoc 保证,如果在将来的所有Java版本中使用相同的种子进行初始化,它将始终返回相同的随机数.
但对于java.util.Collections.shuffle()效用函数背后的算法有什么保证吗?这个实用程序函数的Javadoc没有说明这一点.
我需要这个保证,因为我想确保持久化数据对于将来的任何Java版本都不会无用.
collections ×2
java ×2
java-8 ×2
lambda ×2
babeljs ×1
ecmascript-6 ×1
java-stream ×1
maven ×1
maven-plugin ×1
random ×1
shuffle ×1
traceur ×1