Cristyan:
Tengo un ArrayList que contiene los datos siguientes: nombre de un objeto y algunos detalles sobre él (toma de let como ejemplo un libro y su precio). Así tendríamos:
- Book_Nr1_Name 5
- Book_Nr2_Name 8
- Book_Nr3_Name 4
Donde los números 5,8,4 representa el precio de cada libro. ¿Cómo puedo solucionar este array descendente por el precio, y obtener el resultado final de esta manera:
- Book_Nr2_Name 8
- Book_Nr1_Name 5
- Book_Nr3_Name 4
Jason:
Crear un objeto libro para representar el nombre y el precio. A continuación, crear una colección de todos los libros. Luego ordenar por el precio utilizando un comparador que compara valores enteros. A continuación, a cobro revertido a una lista ya que es solucionado.
static class Book {
private final String name;
private final int price;
Book(String name, int price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public int getPrice() {
return price;
}
}
List<Book> books = Arrays.asList(
new Book("Book_Nr1_Name", 5),
new Book("Book_Nr2_Name", 8),
new Book("Book_Nr3_Name", 4));
List<Book> sortedByPrice = books.stream()
.sorted(Comparator.comparingInt(Book::getPrice).reversed())
.collect(Collectors.toList());