Uso del pacchetto Java 8 Stream Voglio trasformare un elenco di matrici di tipo oggetto in un elenco di un oggetto di classe specifico. Gli array sul primo elenco contengono il campo della classe caricato dal database.Java 8 - Come trasformare un elenco di matrici in un elenco di un oggetto di classe specifico
Questa è la lista di array di tipo oggetto caricato dal DB:
List<Object[]> results = loadFromDB();
Ogni elemento Object[]
presente nella lista contiene i campi che voglio mappare la seguente classe:
class DeviationRisk {
Timestamp plannedStart;
Timestamp plannedEnd;
String rcsName;
BigDecimal riskValue;
BigDecimal mediumThreshold;
BigDecimal highThreshold;
Interval interval;
String getRcsName() {
return rcsName;
}
DeviationRisk(Object[] res) {
this((Timestamp) res[0], (Timestamp) res[1], (String) res[2], (BigDecimal) res[3], (BigDecimal) res[4], (BigDecimal) res[5]);
}
DeviationRisk(Timestamp start, Timestamp end, String rcs, BigDecimal risk, BigDecimal medium, BigDecimal high) {
plannedStart = start;
plannedEnd = end;
rcsName = rcs;
riskValue = risk;
mediumThreshold = medium;
highThreshold = high;
interval = new Interval(plannedStart.getTime(), plannedEnd.getTime());
}
DeviationRisk create(Object[] res) {
return new DeviationRisk(res);
}
List<DateTime> getRange() {
return DateUtil.datesBetween(new DateTime(plannedStart), new DateTime(plannedEnd));
}
}
Come si può vedere ogni elemento Object[]
presente nell'elenco originale results
è solo la rappresentazione dell'array dell'oggetto DeviationRisk
Ora, so come farlo utilizzando i cicli E 'solo 3 righe di codice come potete vedere qui sotto:
List<DeviationRisk> deviations = new ArrayList<>();
for (Object[] res : results) {
deviations.add(new DeviationRisk(res));
}
Come ottenere lo stesso risultato utilizzando Java 8 Streams?
risposta breve e intelligente +1. –
Cheers :) Mi mancava la chiamata al nuovo. – Alboz
@kocko puoi spiegare la parte della mappa di esso. Cosa succede quando dici DeviationRisk :: new. So che questo è un riferimento costruttore, ma non riesco a capire cosa succede nel metodo della mappa quando viene passato un riferimento costruttore. – CKing