Original: Braces MC (compte public WeChat: huakuohao-mc). Concentrez-vous sur la programmation de base JAVA et le Big Data, concentrez-vous sur le partage d'expérience et la croissance personnelle.
Bien que Oacle
la dernière JDK
version officiellement publiée soit arrivée JDK14
. Mais je crois que de nombreuses équipes sont toujours sur le système de production JDK8
, et même certaines équipes sont encore JDK7
ou JDK6
. Même JDK8
si de nombreuses équipes ont mis à niveau l'environnement de production vers , le code est toujours de l'ancien code, ce qui signifie que JDK8
les nouvelles fonctionnalités fournies ne sont pas du tout utilisées .
JDK8
Cela apporte beaucoup de commodité aux programmeurs et permet même aux Java
programmeurs de suivre Python
. Lorsque les Ruby
programmeurs se déchirent, ils peuvent hausser les sourcils et expirer, car JDK8
finalement ils prennent en charge la "paramétrisation du comportement", ce que tout le monde dit souvent, vous pouvez mettre Une fonction est passée en paramètre à une autre fonction .
JDK8
Les deux changements les plus évidents sont le début de la prise en charge des Lambda
expressions et la Stream
diffusion en continu des collections . Ces deux fonctionnalités peuvent rendre le code que nous écrivons plus élégant et nous faciliter la mise en œuvre de certaines fonctions. En particulier Stream
, il est super facile à utiliser, rentable et prend 20 minutes à apprendre. Vous pouvez améliorer la qualité de votre code d'un niveau.
Permettez-moi d'énumérer quelques scènes simples, laissez-vous sentir à quel point l'API Java8
fournie Stream
est pratique et élégante, elle peut être considérée comme une astuce.
Le plus couramment utilisé dans le codage quotidien est la collection. Par exemple, nous pouvons interroger le nombre de livres vendus en une journée à partir de la base de données. Généralement, nous l'écrirons, List<Book> books = query.find(date);
puis nous effectuerons diverses opérations sur cette collection pour répondre aux besoins du niveau de produit.
Scénario 1: Imprimez les détails de chaque livre.
Avant JDK8
//打印出每本书的详情
for (Book book : books){
System.out.println(book.toString());
}
复制代码
Après avoir utilisé Stream
//打印每本书详情
books.stream().forEach(book -> book.toString());
复制代码
Scénario 2: Sélectionnez le prix supérieur à 20 yuans
Avant JDK8
List<Book> highPriceBooks = new ArrayList<>();
for (Book book : books){
if (book.getPrice()>20){
highPriceBooks.add(book);
}
}
复制代码
Après avoir utilisé Stream
highPriceBooks = books.stream().filter(book -> book.getPrice()>20).collect(Collectors.toList());
复制代码
Scène 3: Trier par prix du livre
Avant JDK8
List<Book> sortBooks = new ArrayList<>();
for (Book book : books){
Collections.sort(books, new Comparator<Book>() {
@Override
public int compare(Book o1, Book o2) {
if (o1.getPrice() > o2.getPrice()){
return 1;
}else if (o1.getPrice() < o2.getPrice()){
return -1;
}else {
return 0;
}
}
});
}
复制代码
Après avoir utilisé Stream
sortBooks = books.stream().sorted(Comparator.comparing(Book::getPrice)).collect(Collectors.toList());
复制代码
Si vous le souhaitez, vous pouvez directement l' reversed()
inverser, comme ceci
sortBooks = books.stream().sorted(Comparator.comparing(Book::getPrice).reversed()).collect(Collectors.toList());
复制代码
Scène 4: Obtenez tous les titres
Avant JDK8
List<String> bookNames = new ArrayList<>();
for (Book book : books){
bookNames.add(book.getName());
}
复制代码
Après avoir utilisé Stream
bookNames = books.stream().map(Book::getName).collect(Collectors.toList());
复制代码
Scène 5: Obtenez la somme de tous les prix des livres
Avant JDK8
//计算一天当中卖出的所有书的价格总和。
int totalNum = 0;
for (Book book : books){
totalNum += book.getPrice();
}
复制代码
Après avoir utilisé Stream
totalNum = books.stream().map(Book::getPrice).reduce(0,(a,b)->a+b);
复制代码
Et bien d'autres
Pensez-vous que c'est JDK8
la Stream
compétence? Il peut également terminer le traitement en chaîne, comme celui-ci
//选出价格高于20的两个元素。
books.stream().filter(book -> book.getPrice()> 20).limit(2).collect(Collectors.toList());
复制代码
De plus, si vous souhaitez utiliser votre CPU multicœur pour traiter des collections en parallèle afin d'améliorer la vitesse de calcul, il JDK8
vous suffit d'appeler la parallelStream
méthode simplement . Tout comme cela, books.parallelStream().forEach(book -> book.toString());
JDK vous aidera automatiquement à traiter en parallèle, pas mal.
D'accord, tant d'écriture, plus de compétences d'utilisation doivent encore creuser votre propre expérience, je vais passer au code, bye! Rappelez-vous une phrase, Java8
les nouvelles choses fournies, cela vaut la peine de faire vos efforts pour étudier.
Lecture recommandée:
Les programmeurs Java doivent lire la liste des livres principaux - la version de base
Collection d'instructions de fonctionnement et de maintenance Javaer (version Fast Food)