Original: Braces MC (cuenta pública de WeChat: huakuohao-mc). Concéntrese en la programación básica de JAVA y big data, concéntrese en el intercambio de experiencias y el crecimiento personal.
Aunque Oacle
la última JDK
versión lanzada oficialmente ahora ha llegado JDK14
. Pero creo que muchos equipos todavía están en el sistema de producción JDK8
, e incluso algunos equipos todavía están JDK7
o JDK6
. Aunque muchos equipos han actualizado el entorno de producción JDK8
, el código sigue siendo un código antiguo, lo que significa que JDK8
las nuevas funciones proporcionadas no se utilizan en absoluto .
JDK8
Los programadores de llevar una gran cantidad de conveniencia, o incluso permitir a Java
los programadores a seguir Python
, Ruby
por lo que cuando se ven obligados a lágrima programador también puede estar orgulloso de uno, porque JDK8
finalmente comenzó a apoyar el "comportamiento parametrizado", que es, a menudo decimos, puede poner Una función se pasa como parámetro a otra función .
JDK8
Los dos cambios más obvios son el comienzo del soporte para Lambda
expresiones y la Stream
transmisión de colecciones . Ambas características pueden hacer que el código que escribimos sea más elegante, y también nos facilitan la implementación de ciertas funciones. En particular Stream
, es súper fácil de usar, rentable y lleva 20 minutos aprenderlo. Puede mejorar la calidad de su código en un grado.
Permítame enumerar algunas escenas simples, dejarle sentir cuán conveniente y elegante es la API Java8
proporcionada Stream
, puede considerarse como un truco.
El más utilizado en la codificación diaria es la colección. Por ejemplo, podemos consultar cuántos libros se venden en un día desde la base de datos. Generalmente, escribiremos esto List<Book> books = query.find(date);
y luego haremos una variedad de operaciones en esta colección para satisfacer las necesidades del nivel de producto.
Escenario 1: imprima los detalles de cada libro.
Antes de JDK8
//打印出每本书的详情
for (Book book : books){
System.out.println(book.toString());
}
复制代码
Después de usar Stream
//打印每本书详情
books.stream().forEach(book -> book.toString());
复制代码
Escenario 2: seleccione el precio superior a 20 yuanes
Antes de JDK8
List<Book> highPriceBooks = new ArrayList<>();
for (Book book : books){
if (book.getPrice()>20){
highPriceBooks.add(book);
}
}
复制代码
Después de usar Stream
highPriceBooks = books.stream().filter(book -> book.getPrice()>20).collect(Collectors.toList());
复制代码
Escena 3: Ordenar por precio de libro
Antes de 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;
}
}
});
}
复制代码
Después de usar Stream
sortBooks = books.stream().sorted(Comparator.comparing(Book::getPrice)).collect(Collectors.toList());
复制代码
Si lo desea, puede reversed()
revertirlo directamente , así
sortBooks = books.stream().sorted(Comparator.comparing(Book::getPrice).reversed()).collect(Collectors.toList());
复制代码
Escena 4: Obtén todos los títulos
Antes de JDK8
List<String> bookNames = new ArrayList<>();
for (Book book : books){
bookNames.add(book.getName());
}
复制代码
Después de usar Stream
bookNames = books.stream().map(Book::getName).collect(Collectors.toList());
复制代码
Escena 5: Obtenga la suma de todos los precios de los libros.
Antes de JDK8
//计算一天当中卖出的所有书的价格总和。
int totalNum = 0;
for (Book book : books){
totalNum += book.getPrice();
}
复制代码
Después de usar Stream
totalNum = books.stream().map(Book::getPrice).reduce(0,(a,b)->a+b);
复制代码
Y muchos mas
¿Crees que esa JDK8
es la Stream
habilidad? También puede completar el procesamiento de la cadena, como este
//选出价格高于20的两个元素。
books.stream().filter(book -> book.getPrice()> 20).limit(2).collect(Collectors.toList());
复制代码
Además, si desea utilizar su CPU multinúcleo para procesar colecciones en paralelo para mejorar la velocidad de cálculo, JDK8
solo necesita llamar al parallelStream
método simplemente . Justo así, books.parallelStream().forEach(book -> book.toString());
JDK lo ayudará automáticamente con el procesamiento paralelo, no está mal.
De acuerdo, tanto escribir, más habilidades de uso aún tienen que cavar tu propia experiencia, ¡iré al código, adiós! Recuerde una oración, Java8
las cosas nuevas proporcionadas, vale la pena estudiar.
Lectura recomendada:
Los programadores de Java deben leer la lista básica de libros, la versión básica
Colección de instrucciones de operación y mantenimiento de Javaer (versión de comida rápida)