Java 这两种循环方式之间有什么区别吗?最好使用哪一种?
我是在netbeans 8.1下编写代码的,我使用的是for循环,我很想看看IDE对代码格式化的建议,所以我最初的循环是:Java 这两种循环方式之间有什么区别吗?最好使用哪一种?,java,arraylist,collections,lambda,Java,Arraylist,Collections,Lambda,我是在netbeans 8.1下编写代码的,我使用的是for循环,我很想看看IDE对代码格式化的建议,所以我最初的循环是: List<Produit> produits = pjc.findProduitEntities(); for (Produit produit : produits) { System.out.println("p ="+produit.getTitre()); observableArrayList.add(n
List<Produit> produits = pjc.findProduitEntities();
for (Produit produit : produits) {
System.out.println("p ="+produit.getTitre());
observableArrayList.add(new FXProduit(produit));
}
第二种方法使用内部类范式
匿名类版本最不吸引人,因为它会在每次需要垃圾收集的调用中创建一个新类和新实例 可以使用peek、并行流和方法引用来清理和改进流版本:
pjc.findProduitEntities().parallelStream()
.peek(produit -> System.out.println("p ="+produit.getTitre()))
.map(FXProduit::new)
.forEach(observableArrayList::add);
我假设并行处理是可以的,因为对象最终处于一个可观察的上下文中,在这个上下文中顺序没有区别。即使没有并行流,ie也只是使用。流代码仍然非常干净。@Omore非常有用,你的评论是一个答案谢谢继续学习。谢谢波西米亚人,我从这个答案中学到了很多,我想在谷歌搜索教程,解释::如何工作,但不幸的是,我不知道我们如何称呼它,乍一看,这很像是反射。do new将调用一个与参数匹配的构造函数,这也感觉像Spring 1的思维方式,可能是因为我不懂英语,所以我说的不对。请为我的研究提供关键字::是一个。是的,构造函数也可以使用::new引用,是的,.map方法需要一个函数,该函数接受流的元素类型并返回其他内容,这是接受元素的构造函数所做的。即使顺序不相关,也不意味着ObservalArrayList.add是线程安全的。事实上,这是不太可能的。再加上这个事实,这个操作很可能根本不会从并行处理中受益…
List<Produit> produits = pjc.findProduitEntities();
produits.stream().map(new Function<Produit, Produit>() {
@Override
public Produit apply(Produit produit) {
System.out.println("p ="+produit.getTitre());
return produit;
}
}).forEach((produit) -> {
observableArrayList.add(new FXProduit(produit));
});
pjc.findProduitEntities().parallelStream()
.peek(produit -> System.out.println("p ="+produit.getTitre()))
.map(FXProduit::new)
.forEach(observableArrayList::add);