Print a value of an ArrayList that is Inside an ArrayList - java

1

I have an ArrayList that stores certain objects, but one of them is an ArrayList, the question is the next one to show a Jtable the names of the people and the biggest sale that the problem has made is that the sales are saved in an Arraylist

This is my code, it shows me the sellers but when calculating a bigger sale it shows me the same in all

public void mayorVenta(){

        String matriz[][] = new String[vendedor.size()][3];
        double v ;
        for (int i = 0; i < vendedor.size(); i++) {

            matriz[i][0] = vendedor.get(i).getCodigo();
            matriz[i][1] = vendedor.get(i).getNombre()+" "+vendedor.get(i).getApellido();


            for (int j = 0; j < vendedor.get(i).getVenta().size(); j++){

                v = vendedor.get(i).getVenta().get(0).getValor_venta();
                if(v < vendedor.get(i).getVenta().get(j).getValor_venta()){
                     v= vendedor.get(i).getVenta().get(j).getValor_venta();
                }

                matriz[i][2] = Double.toString(v);
            }

        }
        tablaVendedores1.setModel(new javax.swing.table.DefaultTableModel(
                matriz,
                new String[]{
                    "Codigo","Nombre", "Mayor ventas Realizada"
                }
        ));
    }

To summarize a bit the Arraylist and Como to have an idea that each Arraylist keeps:

ArrayList<Vendedor> vendedor = new ArrayList<Vendedor>();
vendedor.add(new Vendedor("Codigo", "Nombre" ,ventas));

ArrayList<Ventas> ventas  = new ArrayList<Ventas>();
ventas.add(new Ventas("producto", valorVenta, fecha);
    
asked by MZ39720 28.11.2018 в 07:11
source

2 answers

0

I'll pose it to you in my own way to see if it's worth it.

We get a list with all the sellers ..

List<Vendedor> vendedores = misVendedores();

We declare a variable of type double in my case, where we will keep the value of the greater sale of the seller.

double mayorVenta = 0;

And a variable i to iterate through the indices of the different vendors.

int i = 0;

Now we go through the different sellers with an improved for for each '..

for (Vendedor vendedor : vendedores) {

}

And from each of its sales we get the highest value ..

for (Vendedor vendedor : vendedores) {
     for (Ventas v : vendedores.get(i).getVentas()) {
            if (v.getValorVenta() > mayorVenta) mayorVenta = v.getValorVenta();
     }
     i++;
     System.out.println("Vendedor: " + vendedor.getNombre() + ", y su mayor venta es: " + mayorVenta);  

}
List<Vendedor> vendedores = misVendedores();
        double mayorVenta = 0;
        int i = 0;
        for (Vendedor vendedor : vendedores) {
            for (Ventas v : vendedores.get(i).getVentas()) {
                if (v.getValorVenta() > mayorVenta) mayorVenta = v.getValorVenta();
            }
            i++;
            System.out.println("Vendedor: " + vendedor.getNombre() + ", y su mayor venta es: " + mayorVenta);
        }

And a result of the raised could be this

Vendedor: Fermin, y su mayor venta es: 50.0
Vendedor: Antonio, y su mayor venta es: 80.0
    
answered by 28.11.2018 в 09:55
0

Using Java 8 or higher and starting from a Vendor:

public class Vendedor{
    ...
        public double getMayorVenta(Vendedor vendedor){
            return vendedor.getVentas()
                  .stream()//Obtiene un Stream sobre la lista para operar sobre ella
                  .map(Ventas::getValorVenta) //Mapea el contenido del stream de Ventas (del List original) a Double, en base al método getValorVenta
                  .max();//Del conjunto de valores del Stream (ahora mismo Doubles con el valorVenta) se obtiene el valor superior
        }
...
}

With this method you would obtain in a simple way the best sale of each seller.

double mayorVenta = vendedor.getMayorVenta();
    
answered by 28.11.2018 в 10:06