Boa tarde Pessoal, alguem sabe resolver isso!!
Eu tenho 2 arrays do objeto Agregado por exemplo:
Agregado = {codigoVendedor: number; nomeVendedor: string, quantidadeVendida: number};
agregados1 = [{01, ‘Joao’, 50}, {02, ‘Maria’, 20}];
agregados2 = [{01, ‘Joao’, 20}, {02, ‘Maria’, 10}, {03, ‘Pedro’, 15}];
Eu preciso que faça um comando para unir eles somando, ficando desta maneira:
resultado = [{01, ‘Joao’, 70}, {02, ‘Maria’, 30}, {03, ‘Pedro’, 15}];
Se alguem puder me ajudar,
Obrigado
faz 2 for each, quando o códigoVendedor do objeto do agregados1 for igual ao objeto do agregados 2 você soma e adiciona em uma nova Arraylist, só cria uma condição para verificar se essa nova ArrayList já não contêm um elemento com esse codigoVendedor.
Boa tarde amigo. Espero que te ajude
public void test() {
//agregados1 = [{01, ‘Joao’, 50}, {02, ‘Maria’, 20}];
Agregado[] agregados1 = {new Agregado(1, "Joao", 50), new Agregado(2, "Maria", 20)};
//agregados2 = [{01, ‘Joao’, 20}, {02, ‘Maria’, 10}, {03, ‘Pedro’, 15}];
Agregado[] agregados2 = {new Agregado(1, "Joao", 20), new Agregado(2, "Maria", 10), new Agregado(3, "Pedro", 15)};
//Eu preciso que faça um comando para unir eles somando, ficando desta maneira:
Agregado[] resultado = somarAgregado(agregados1, agregados2);
//resultado = [{01, ‘Joao’, 70}, {02, ‘Maria’, 30}, {03, ‘Pedro’, 15}];
Arrays.asList(resultado).forEach(ag -> System.out.println(ag.toString()));
}
public Agregado[] somarAgregado(Agregado[] agregados1, Agregado[] agregados2) {
//cria lista para recolher os resultados
List<Agregado> lista = new ArrayList();
//inverte as listas para que a primeira seja sempre a maior
if (agregados1.length < agregados2.length) {
Agregado[] temp = agregados1;
agregados1 = agregados2;
agregados2 = temp;
}
//loop que passa toda a lista 1
l1:
for (Agregado ag1 : agregados1) {
//loop que passa toda a lista 2
for (Agregado ag2 : agregados2) {
//verificação de igualdade entre os objetos
if (ag1.getCodigoVendedor().equals(ag2.getCodigoVendedor())
&& ag1.getNomeVendedor().equals(ag2.getNomeVendedor())) {
//cria novo objeto e soma as quantidades adicionando a lista
Agregado nag = new Agregado();
nag.setCodigoVendedor(ag1.getCodigoVendedor());
nag.setNomeVendedor(ag1.getNomeVendedor());
nag.setQuantidadeVendida(ag1.getQuantidadeVendida().doubleValue() + ag2.getQuantidadeVendida().doubleValue());
lista.add(nag);
//volta para o primeiro loop
continue l1;
}
}
//adiciona objeto que não existir na segunda lista
lista.add(ag1);
}
//retorna lista transformada em array contendo o resultado
return lista.toArray(new Agregado[lista.size()]);
}
public class Agregado {
private Number codigoVendedor;
private String nomeVendedor;
private Number quantidadeVendida;
public Agregado() {
}
public Agregado(Number codigoVendedor, String nomeVendedor, Number quantidadeVendida) {
this.codigoVendedor = codigoVendedor;
this.nomeVendedor = nomeVendedor;
this.quantidadeVendida = quantidadeVendida;
}
//Getters and Setters
@Override
public String toString() {
return "Agregado{" + "codigoVendedor=" + codigoVendedor + ", nomeVendedor=" + nomeVendedor + ", quantidadeVendida=" + quantidadeVendida + '}';
}
}
Muito obrigado… Villagram