elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Arraylist
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Arraylist  (Leído 2,255 veces)
luis9829

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Arraylist
« en: 26 Mayo 2019, 00:39 am »

buenas quisiera que me ayuden como implemento el siguiente metodo en mi arraylist les dejo lo que e codificado de la clase y el arraylist el metodo dice:

se debe Comparar un coche con su anteriormente ingresado


clase coche
Código:
public class Coche {
// Atributos
private static int aux=0;
private final int numCarros;
private String matricula;
private String marca;
private String modelo;
private int Km;
// Getters y setters
public String getMatricula() {
return matricula;
}
public void setMatricula(String matricula) {
this.matricula = matricula;
}
public String getMarca() {
return marca;
}
public void setMarca(String marca) {
this.marca = marca;
}
public String getModelo() {
return modelo;
}
public void setModelo(String modelo) {
this.modelo = modelo;
}
public int getKm() {
return Km;
}
public void setKm(int km) {
Km = km;
}

public static int getAux() {
return aux;
}
public static void setAux(int aux) {
Coche.aux = aux;
}
public int getNumCarros() {
return numCarros;
}
// constructor por defecto
public Coche() {
this.numCarros=0;
this.matricula = "";
this.marca = "";
this.modelo = "";
Km = 0;
}
// constructor
public Coche( String vmarca,String vmatricula, String vmodelo, int vkm) {
numCarros=++aux;
this.marca = vmarca;
this.matricula = vmatricula;
this.modelo = vmodelo;
Km = vkm;
}


@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Coche other = (Coche) obj;
if (Km != other.Km)
return false;
if (marca == null) {
if (other.marca != null)
return false;
} else if (!marca.equals(other.marca))
return false;
if (matricula == null) {
if (other.matricula != null)
return false;
} else if (!matricula.equals(other.matricula))
return false;
if (modelo == null) {
if (other.modelo != null)
return false;
} else if (!modelo.equals(other.modelo))
return false;
if (numCarros != other.numCarros)
return false;
return true;
}
@Override
public String toString() {
return "Auto # :"+ numCarros + "\n Marca: " + this.getMarca() + "\n Modelo: " + modelo +
"\n Matricula: " + this.getMatricula() + "\n Kilometraje: " + Km;
}



}

arraylistcoches

Código:
import java.util.ArrayList;
public class ListaCoches {
private ArrayList<Coche> lista;

public ArrayList<Coche> getLista() {
return lista;
}

public void setLista(ArrayList<Coche> lista) {
this.lista = lista;
}

public ListaCoches() {
this.lista = new ArrayList<Coche>() ;
}
// metodos
public void mostrarCoches() {
for(Coche c : lista){
System.out.println(c);
}
}

public void agregarCoches(Coche c1) {
lista.add(c1);
}

public void mostrarPorMarca(String marca) {
ListaCoches listam = new ListaCoches();
for(Coche c :lista) {
if(c.getMarca().equals(marca)) {
listam.agregarCoches(c);
System.out.println(c);
}
}
}
public void mostrarPorKm(int kilometros) {
ListaCoches listak = new ListaCoches();
for(Coche c:lista) {
if(c.getKm()<kilometros) {
listak.agregarCoches(c);
System.out.println(c);
}
}
}
public Coche mayorKm() {
Coche aux=new Coche();
int numKm=0;
for(Coche c:lista) {
if(c.getKm()>numKm) {
numKm=c.getKm();
aux=c;
}
}
return aux;
}

public void ordenadosPorKm() {
int i,j;
Coche aux;
for(i=0;i<lista.size()-1;i++)
for(j=0;j<lista.size()-i-1;j++)
if(lista.get(j+1).getKm()<lista.get(j).getKm()) {
aux=lista.get(j+1);
lista.set(j+1, lista.get(j));
lista.set(j, aux);
}


mostrarCoches();
}
}

pueden ayudarme a como debo implementar ese metodo en mi arraylist


En línea

rub'n


Desconectado Desconectado

Mensajes: 1.217


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: Arraylist
« Respuesta #1 en: 26 Mayo 2019, 00:44 am »

Que tal ?

Como ?

se debe Comparar un coche con su anteriormente ingresado, formula mejor la descripción


En línea



rubn0x52.com KNOWLEDGE  SHOULD BE FREE.
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen ki
luis9829

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Arraylist
« Respuesta #2 en: 26 Mayo 2019, 00:51 am »

si osea  lo que quiero en si es que el coche que se ingreso al final se lo compare con el que se ingreso antes de ese osea el penultimo si asi lo decimos entonces lo que quiero q me salga como mensaje es que si los dos coches son iguales o si el coche ingresado anteriormente es diferente del final a lo q voy es por ejemplo
 
coche 10

marca toyota
placa 12
kilometraje 15


coche 11

marca chevrolet
placa 10
kilometraje 0

esto es lo que haria el metodo agregar
lo que quiero que haga este otro metodo es compararme y que me salte los mensajes anteriormente descritos
En línea

rub'n


Desconectado Desconectado

Mensajes: 1.217


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: Arraylist
« Respuesta #3 en: 26 Mayo 2019, 16:28 pm »

si osea  lo que quiero en si es que el coche que se ingreso al final se lo compare con el que se ingreso antes de ese osea el penultimo si asi lo decimos entonces lo que quiero q me salga como mensaje es que si los dos coches son iguales o si el coche ingresado anteriormente es diferente del final a lo q voy es por ejemplo
 
coche 10

marca toyota
placa 12
kilometraje 15


coche 11

marca chevrolet
placa 10
kilometraje 0

esto es lo que haria el metodo agregar
lo que quiero que haga este otro metodo es compararme y que me salte los mensajes anteriormente descritos


* Añadido método en clase ListaCoches, ojo esta manera compara la referencia en memoria
no los valores que tiene configurados el objeto por medio sus setters.



En este método te lo dejo para que tu mismo lo edites y compares getters con getters, tanto de vehículo anterior como penúltimo, pare que te funcione realmente lo que quieres hacer, porque así uses equals o == , no funcionara correctamente, para este caso que deseas,
ve el final en este ejemplo para que veas la diferencia. así como te lo dice Aitor va bien.


Código
  1.    /**
  2.      * usando == para comparar coches equals también te serviría
  3.      */
  4.    public void compararFinalConAnterior() {
  5.        //si la lista contiene mas de 2 coches
  6.        if(lista.size() >= 2) {
  7.            final Coche ultimoCoche = lista.get(lista.size() - 1);
  8.            final Coche penultimoCoche  = lista.get(lista.size() - 2);
  9.  
  10.            if( ultimoCoche == (penultimoCoche) ) {
  11.  
  12.                LOGGER.info("El ultimo coche y penultimo son iguales");
  13.                final StringBuilder sb = new StringBuilder()
  14.                    .append("Ultimo coche: ")
  15.                        .append(ultimoCoche)
  16.                        .append("\nPenultimo coche: ")
  17.                        .append(penultimoCoche);
  18.                LOGGER.info(sb.toString());
  19.  
  20.            } else {
  21.  
  22.                LOGGER.info("El ultimo coche y penultimo son diferentes");
  23.                final StringBuilder sb = new StringBuilder()
  24.                        .append("Ultimo coche: ")
  25.                        .append(ultimoCoche)
  26.                        .append("\nPenultimo coche: ")
  27.                        .append(penultimoCoche);
  28.                LOGGER.info(sb.toString());
  29.  
  30.            }
  31.        }
  32.    }

Código
  1.  
  2. import java.util.Objects;
  3.  
  4. /**
  5.  * @implSpec NO-THREAD-SAFE
  6.  */
  7. public class Coche {
  8.  
  9.    // Atributos
  10.    private static int aux = 0;
  11.    private final int numCarros;
  12.    private String matricula;
  13.    private String marca;
  14.    private String modelo;
  15.    private int Km;
  16.  
  17.    // Getters y setters
  18.    public String getMatricula() {
  19.        return matricula;
  20.    }
  21.  
  22.    public void setMatricula(String matricula) {
  23.        this.matricula = matricula;
  24.    }
  25.  
  26.    public String getMarca() {
  27.        return marca;
  28.    }
  29.  
  30.    public void setMarca(String marca) {
  31.        this.marca = marca;
  32.    }
  33.  
  34.    public String getModelo() {
  35.        return modelo;
  36.    }
  37.  
  38.    public void setModelo(String modelo) {
  39.        this.modelo = modelo;
  40.    }
  41.  
  42.    public int getKm() {
  43.        return Km;
  44.    }
  45.  
  46.    public void setKm(int km) {
  47.        Km = km;
  48.    }
  49.  
  50.    public static int getAux() {
  51.        return aux;
  52.    }
  53.  
  54.    public static void setAux(int aux) {
  55.        Coche.aux = aux;
  56.    }
  57.  
  58.    public int getNumCarros() {
  59.        return numCarros;
  60.    }
  61.  
  62.    // constructor por defecto
  63.    public Coche() {
  64.        this.numCarros = ++aux;
  65.        this.matricula = "";
  66.        this.marca = "";
  67.        this.modelo = "";
  68.        Km = 0;
  69.    }
  70.  
  71.    // constructor
  72.    public Coche(String vmarca, String vmatricula, String vmodelo, int vkm) {
  73.        numCarros = ++aux;
  74.        this.marca = vmarca;
  75.        this.matricula = vmatricula;
  76.        this.modelo = vmodelo;
  77.        Km = vkm;
  78.    }
  79.  
  80.  
  81.    @Override
  82.    public boolean equals(Object obj) {
  83.        if (this == obj)
  84.            return true;
  85.        if (obj == null)
  86.            return false;
  87.        if (getClass() != obj.getClass())
  88.            return false;
  89.        Coche other = (Coche) obj;
  90.        if (Km != other.Km)
  91.            return false;
  92.        if (marca == null) {
  93.            if (other.marca != null)
  94.                return false;
  95.        } else if (!marca.equals(other.marca))
  96.            return false;
  97.        if (matricula == null) {
  98.            if (other.matricula != null)
  99.                return false;
  100.        } else if (!matricula.equals(other.matricula))
  101.            return false;
  102.        if (modelo == null) {
  103.            if (other.modelo != null)
  104.                return false;
  105.        } else if (!modelo.equals(other.modelo))
  106.            return false;
  107.        if (numCarros != other.numCarros)
  108.            return false;
  109.        return true;
  110.    }
  111.  
  112.    @Override
  113.    public int hashCode() {
  114.        return Objects.hash(numCarros, matricula, marca, modelo, Km);
  115.    }
  116.  
  117.    @Override
  118.    public String toString() {
  119.        return "Auto # :" + numCarros + "\n Marca: " + this.getMarca() + "\n Modelo: " + modelo +
  120.                "\n Matricula: " + this.getMatricula() + "\n Kilometraje: " + Km;
  121.    }
  122.  
  123.  
  124. }


Código
  1.  
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import java.util.logging.Logger;
  5.  
  6. public class ListaCoches {
  7.  
  8.    private ArrayList<Coche> lista;
  9.    private static final Logger LOGGER = Logger.getLogger(ListaCoches.class.getSimpleName());
  10.  
  11.    public ArrayList<Coche> getLista() {
  12.        return lista;
  13.    }
  14.  
  15.    public void setLista(ArrayList<Coche> lista) {
  16.        this.lista = lista;
  17.    }
  18.  
  19.    public ListaCoches() {
  20.        this.lista = new ArrayList<Coche>();
  21.    }
  22.  
  23.    // metodos
  24.    public void mostrarCoches() {
  25.        for (Coche c : lista) {
  26.            System.out.println(c);
  27.        }
  28.    }
  29.  
  30.    public void agregarCoches(Coche c1) {
  31.        lista.add(c1);
  32.    }
  33.  
  34.    public void mostrarPorMarca(String marca) {
  35.        ListaCoches listam = new ListaCoches();
  36.        for (Coche c : lista) {
  37.            if (c.getMarca().equals(marca)) {
  38.                listam.agregarCoches(c);
  39.                System.out.println(c);
  40.            }
  41.        }
  42.    }
  43.  
  44.    public void mostrarPorKm(int kilometros) {
  45.        ListaCoches listak = new ListaCoches();
  46.        for (Coche c : lista) {
  47.            if (c.getKm() < kilometros) {
  48.                listak.agregarCoches(c);
  49.                System.out.println(c);
  50.            }
  51.        }
  52.    }
  53.  
  54.    public Coche mayorKm() {
  55.        Coche aux = new Coche();
  56.        int numKm = 0;
  57.        for (Coche c : lista) {
  58.            if (c.getKm() > numKm) {
  59.                numKm = c.getKm();
  60.                aux = c;
  61.            }
  62.        }
  63.        return aux;
  64.    }
  65.  
  66.    public boolean verifyAllEqualUsingALoop() {
  67.        for (Coche s : lista) {
  68.            if (!s.equals(lista.get(0)))
  69.                return false;
  70.        }
  71.        return true;
  72.    }
  73.  
  74.    /**
  75.      * usando == para comparar coches equals tambien te serviria
  76.      */
  77.    public void compararFinalConAnterior() {
  78.        //si la lista contiene mas de 2 coches
  79.        if(lista.size() >= 2) {
  80.            final Coche ultimoCoche = lista.get(lista.size() - 1);
  81.            final Coche penultimoCoche  = lista.get(lista.size() - 2);
  82.  
  83.            if( ultimoCoche == (penultimoCoche) ) {
  84.  
  85.                LOGGER.info("El ultimo coche y penultimo son iguales");
  86.                final StringBuilder sb = new StringBuilder()
  87.                    .append("Ultimo coche: ")
  88.                        .append(ultimoCoche)
  89.                        .append("\nPenultimo coche: ")
  90.                        .append(penultimoCoche);
  91.                LOGGER.info(sb.toString());
  92.  
  93.            } else {
  94.  
  95.                LOGGER.info("El ultimo coche y penultimo son diferentes");
  96.                final StringBuilder sb = new StringBuilder()
  97.                        .append("Ultimo coche: ")
  98.                        .append(ultimoCoche)
  99.                        .append("\nPenultimo coche: ")
  100.                        .append(penultimoCoche);
  101.                LOGGER.info(sb.toString());
  102.  
  103.            }
  104.        }
  105.    }
  106.  
  107.    public void ordenadosPorKm() {
  108.        int i, j;
  109.        Coche aux;
  110.        for (i = 0; i < lista.size() - 1; i++)
  111.            for (j = 0; j < lista.size() - i - 1; j++)
  112.                if (lista.get(j + 1).getKm() < lista.get(j).getKm()) {
  113.                    aux = lista.get(j + 1);
  114.                    lista.set(j + 1, lista.get(j));
  115.                    lista.set(j, aux);
  116.                }
  117.  
  118.  
  119.        mostrarCoches();
  120.    }
  121. }

Código
  1. import java.util.ArrayList;
  2.  
  3. /**
  4.  *
  5.  */
  6. public class MainClass {
  7.  
  8.    public MainClass() {
  9.        final Coche cocheFiesta = new Coche();
  10.        cocheFiesta.setMarca("Ford");
  11.        cocheFiesta.setMatricula("124141");
  12.        cocheFiesta.setKm(80);
  13.        cocheFiesta.setModelo("Fiesta");
  14.  
  15.        final Coche cocheFocus = new Coche();
  16.        cocheFocus.setMarca("Ford");
  17.        cocheFocus.setMatricula("415423");
  18.        cocheFocus.setKm(85);
  19.        cocheFocus.setModelo("Focus");
  20.  
  21.        final Coche cocheFiat = new Coche();
  22.        cocheFiat.setMarca("Fiat");
  23.        cocheFiat.setMatricula("4154223");
  24.        cocheFiat.setKm(95);
  25.        cocheFiat.setModelo("Fiat volador");
  26.  
  27.        final Coche cocheFiat2 = new Coche();
  28.        cocheFiat2.setMarca("Fiat");
  29.        cocheFiat2.setMatricula("4154223");
  30.        cocheFiat2.setKm(95);
  31.        cocheFiat2.setModelo("Fiat volador");
  32.  
  33.        final ArrayList<Coche> cocheList = new ArrayList<>();
  34.        cocheList.add(cocheFiesta);
  35.        cocheList.add(cocheFocus);
  36.        /*
  37.          * Coches añadidos aqui iguales.
  38.          */
  39.        cocheList.add(cocheFiesta);
  40.        cocheList.add(cocheFiat);
  41.        cocheList.add(cocheFiat);
  42.  
  43.        final ListaCoches listaCoches = new ListaCoches();
  44.        listaCoches.setLista(cocheList);
  45.        listaCoches.compararFinalConAnterior();
  46.  
  47.    }
  48.  
  49.    public static void main(String ...blalbal) {
  50.        new MainClass();
  51.    }
  52. }
  53.  

salida si los ultimos coches son iguales


Código
  1. INFORMACIÓN: El ultimo coche y penultimo son iguales
  2. INFORMACIÓN: Ultimo coche: Auto # :3
  3. Marca: Fiat
  4. Modelo: Fiat volador
  5. Matricula: 4154223
  6. Kilometraje: 95
  7. Penultimo coche: Auto # :3
  8. Marca: Fiat
  9. Modelo: Fiat volador
  10. Matricula: 4154223
  11. Kilometraje: 95

Mira lo que pasa así usemos == o equals

Código
  1.  
  2. final Coche cocheFiat = new Coche();
  3. cocheFiat.setMarca("Fiat");
  4. cocheFiat.setMatricula("4154223");
  5. cocheFiat.setKm(95);
  6. cocheFiat.setModelo("Fiat volador");
  7.  
  8. final Coche cocheFiat2 = new Coche();
  9. cocheFiat2.setMarca("Fiat");
  10. cocheFiat2.setMatricula("4154223");
  11. cocheFiat2.setKm(95);
  12. cocheFiat2.setModelo("Fiat volador");

y usamos en la comparacion del metodo compararFinalConAnterior() este serial el resultado

Código
  1. INFORMACIÓN: El ultimo coche y penultimo son diferentes
  2. INFORMACIÓN: Ultimo coche: Auto # :4
  3. Marca: Fiat
  4. Modelo: Fiat volador
  5. Matricula: 4154223
  6. Kilometraje: 95
  7. Penultimo coche: Auto # :3
  8. Marca: Fiat
  9. Modelo: Fiat volador
  10. Matricula: 4154223
  11. Kilometraje: 95
  12.  

que los autos son diferentes únicamente, lo que varia es el ID, y su referencia en memoria, pero todo los demás es igual. guarro no? veo que mejor compáralos por medio de sus getters, getter a getter, espero no haberte confundido
« Última modificación: 26 Mayo 2019, 17:44 pm por rub'n » En línea



rubn0x52.com KNOWLEDGE  SHOULD BE FREE.
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen ki
aitorBoole

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Arraylist
« Respuesta #4 en: 26 Mayo 2019, 16:47 pm »

Mmmm... fui a intentar resolver tu duda en mi ordenador, pero el programa no tiene ni el método main. Las coas están algo desordenadas y no entiendo muy bien el ejercicio. Bueno, en caso de que tuviera el programa seria muy fácil, deberías pillar las dos ultimas posiciones del ArrayList de Coches, e ir comprobando cada una de las características de ambos coches y compararlas entre ellas. Para ello ayúdate de un contador. Te dejo un ejemplo que espero que se asemeje a los que andabas buscando:

Cada vez que ingreses un nuevo coche, deberás implementar un contador:

int cont = 0;
cont ++;


Este contador llevara la posición de la Array de coches en la que el ultimo coche ingreso
Una vez tengamos eso, lo demás es realmente sencillo:

if (ListaCoches.get(i-1).getModelo.equals(ListaCoches.get(i).getModelo){
  }if (ListaCoches.get(i-1).getMatricula.equals(ListaCoches.get(i).getMatricula){
    } if (ListaCoches.get(i-1).getAnyo == ListaCoches.get(i).getAnyo){
           ...y seguiriamos asi comprbando todo los parametros...
                    System.out.pintln ("El coche es igual al anterior");

     }else{
          System.out.println ("El coche es distinto al anterior");
  }else{
      System.out.println ("El coche es distinto al anterior");
}else{
    System.out.println ("El coche es distinto al anterior");


Todo esto seria mas fácil si lo pones en un mismo "if". Yo te lo puse en varios para que lo veas mas claro, pero es una manera algo "chapucera" y poco elegante de hacerlo. Te dejo como seria aquello simplificado:

if ((ListaCoches.get(i-1).getModelo.equals(ListaCoches.get(i).getModelo)&&(ListaCoches.get(i-1).getMatricula.equals(ListaCoches.get(i).getMatricula)&& (ListaCoches.get(i-1).getAnyo == ListaCoches.get(i).getAnyo)){
     System.out.pintln ("El coche es igual al anterior");
}else{
     System.out.println ("El coche es distinto al anterior");
     

Espero haber resuelto tu duda, buena suerte!
     
En línea

Salu2, Aitor
CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: Arraylist
« Respuesta #5 en: 26 Mayo 2019, 17:30 pm »

La comparacion con == compara referencias, no valores. Usa equals().

En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
arraylist character to arraylist String
Java
mapers 4 5,295 Último mensaje 1 Noviembre 2011, 15:24 pm
por adastra
ArrayList
Java
ALBUR 9 7,851 Último mensaje 29 Abril 2012, 02:32 am
por ALBUR
Meter ArrayList en Otro ArrayList
Java
Tuplado 1 3,082 Último mensaje 5 Enero 2014, 22:10 pm
por ~ Yoya ~
ArrayList
Programación C/C++
BrendiisFox 1 1,473 Último mensaje 2 Octubre 2015, 21:08 pm
por user-marcos
bubblesort arraylist
Java
Beginner Web 7 3,073 Último mensaje 14 Abril 2019, 15:13 pm
por CalgaryCorpus
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines