java - For loops to Stream -


i'm learning streams , parallelstreams , trying apply this. i'm changing codes contains for loops streams can't change part of code. first, it's possible reduce code streams?

with foreach loops

private list<basicdbobject> linhacriativa(list<basicdbobject> linhas) {         list<basicdbobject> lista = new arraylist<>();         (basicdbobject db : linhas) {             if (!db.tomap().containskey("spec_linha-criativa")) {                 lista.add(db);                 continue;             }             string[] linhacriativa = db.get("spec_linha-criativa").tostring().split(";");             if (linhacriativa.length > 0) {                 (string criativa : linhacriativa) {                     basicdbobject dbobject = (basicdbobject) db.copy();                     dbobject.replace("spec_linha-criativa", criativa);                     lista.add(dbobject);                 }             } else {                 lista.add(db);             }         }         return lista;     } 

i can this, can't when db.tomap().containskey("spec_linha-criativa")

list<basicdbobject> notcontains = linhas.parallelstream().filter(m -> !m.tomap().containskey("spec_linha-criativa")).collect(collectors.tolist()); 

if understand code correctly, each basicdbobject in input list, extract 1 or several basicdbobjects, , add them output list.

this flatmap() operation:

return linhas.stream()              .flatmap(this::extractoutputdbobjectsfrom)              .collect(collectors.tolist()); 

now need create extractoutputdbobjectsfrom method:

private stream<basicdbobject> extractoutputdbobjectsfrom(dbobject db) {     if (!db.tomap().containskey("spec_linha-criativa")) {         return stream.of(db);     }      string[] linhacriativa = db.get("spec_linha-criativa").tostring().split(";");     if (linhacriativa.length > 0) {         return arrays.stream(linhacriativa).map(criativa -> {             basicdbobject dbobject = (basicdbobject) db.copy();             dbobject.replace("spec_linha-criativa", criativa);             return dbobject;         });     } else {         return stream.of(db);     } } 

(not tested, should idea)


Comments

Popular posts from this blog

android - Pass an Serializable object in AIDL -

How to provide Authorization & Authentication using Asp.net, C#? -

How to use Authorization & Authentication in Asp.net, C#? -