Ich brauche nur Hilfe mit diesem einen Teil meiner Hausaufgaben. Die Anweisungen lauten wie folgt: Verwenden Sie Lambdas und Streams, um jede Rechnung ihrer PartDescription und Quantity zuzuordnen, sortieren Sie die Ergebnisse nach Menge, und zeigen Sie die Ergebnisse an.Mapping einer Sammlung von zwei Feldern in Java
Ich habe den größten Teil des Codes, aber was ich verwirrt bin, ist, wie ich nach Teilebeschreibung UND Menge zuordnen. Ich verstehe, wie man mit nur einem Feld, aber nicht mit zwei Feldern abbildet. Hier ist mein Code. Der letzte Teil ist wo ich anfange, die Hilfe zu brauchen. jetzt ist es nur von einem Teil Beschreibung abgebildet, aber ich brauche, indem ein Teil Bezeichnung und Menge
import java.util.*;
import java.util.function.Function;
public class ProcessInvoices {
public static void main(String[] args) {
//initialize array of invoice objects
Invoice[] invoices = {
new Invoice(83 , "Electric sander", 7 , 57.89),
new Invoice(24, "Power saw", 18, 99.99),
new Invoice(7, "Sledge hammer", 11, 21.50),
new Invoice(77, "Hammer", 76, 11.99),
new Invoice(39, "Lawn mower", 3, 79.50),
new Invoice(68, "Screwdriver" ,106, 6.99),
new Invoice(56, "Jig saw", 21 ,11.00),
new Invoice(3, "Wrench" ,34, 7.50)};
List<Invoice> list = Arrays.asList(invoices);
System.out.println("List of Invoice items: ");
list .stream()
.forEach(System.out::println);
//Fucnction for getting part information for sorting
Function<Invoice, String> byPartDescription = Invoice::getPartDescription;
Function<Invoice, Double> byPrice = Invoice::getPrice;
Function<Invoice, Integer> byQuantity = Invoice::getQuantity:;
//Comparator for invoice objects by part descsriprion
Comparator<Invoice> justPartDesc =
Comparator.comparing(byPartDescription);
//sort by part description
System.out.printf("%nInvoice objects in ascending order by part description: %n");
list .stream()
.sorted(justPartDesc)
.forEach(System.out::println);
//Comparator for invoice by price
Comparator<Invoice> justPrice = Comparator.comparing(byPrice);
//sort by price
System.out.printf("%nInvoice Obejects sorted in ascending order by price: %n");
list .stream()
.sorted(justPrice)
.forEach(System.out::println);
Comparator<Invoice> justQuantity = Comparator.comparing(byQuantity);
//map invoice to part descripiton and quantity
System.out.printf("%nInvoice objects mapped to part descripton and Quantity");
list .stream()
.map(Invoice::getPartDescription)
.distinct()
.sorted()
.forEach(System.out::println);
}
}
ok das half. Ich habe nicht genau das gemacht, aber es hat mir die Idee gegeben, eine neue Methode in meiner Invoice-Klasse zu erstellen, die Teilbeschreibung und Menge erhält und ich in der Art verwendet habe. Vielen Dank – Cake771