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.
/**
* usando == para comparar coches equals también te serviría
*/
public void compararFinalConAnterior() {
//si la lista contiene mas de 2 coches
if(lista.size() >= 2) {
final Coche ultimoCoche = lista.get(lista.size() - 1);
final Coche penultimoCoche = lista.get(lista.size() - 2);
if( ultimoCoche == (penultimoCoche) ) {
LOGGER.info("El ultimo coche y penultimo son iguales");
final StringBuilder sb = new StringBuilder()
.append("Ultimo coche: ")
.append(ultimoCoche)
.append("\nPenultimo coche: ")
.append(penultimoCoche);
LOGGER.info(sb.toString());
} else {
LOGGER.info("El ultimo coche y penultimo son diferentes");
final StringBuilder sb = new StringBuilder()
.append("Ultimo coche: ")
.append(ultimoCoche)
.append("\nPenultimo coche: ")
.append(penultimoCoche);
LOGGER.info(sb.toString());
}
}
}
import java.util.Objects;
/**
* @implSpec NO-THREAD-SAFE
*/
public class Coche {
// Atributos
private static int aux = 0;
private final int numCarros;
private int Km;
// Getters y setters
public String getMatricula
() { return matricula;
}
public void setMatricula
(String matricula
) { this.matricula = matricula;
}
return marca;
}
public void setMarca
(String marca
) { this.marca = marca;
}
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 = ++aux;
this.matricula = "";
this.marca = "";
this.modelo = "";
Km = 0;
}
// constructor
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 int hashCode() {
return Objects.hash(numCarros, matricula, marca, modelo, Km);
}
@Override
return "Auto # :" + numCarros + "\n Marca: " + this.getMarca() + "\n Modelo: " + modelo +
"\n Matricula: " + this.getMatricula() + "\n Kilometraje: " + Km;
}
}
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;
public class ListaCoches {
private ArrayList<Coche> lista;
private static final Logger LOGGER = Logger.getLogger(ListaCoches.class.getSimpleName());
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) {
}
}
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);
}
}
}
public void mostrarPorKm(int kilometros) {
ListaCoches listak = new ListaCoches();
for (Coche c : lista) {
if (c.getKm() < kilometros) {
listak.agregarCoches(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 boolean verifyAllEqualUsingALoop() {
for (Coche s : lista) {
if (!s.equals(lista.get(0)))
return false;
}
return true;
}
/**
* usando == para comparar coches equals tambien te serviria
*/
public void compararFinalConAnterior() {
//si la lista contiene mas de 2 coches
if(lista.size() >= 2) {
final Coche ultimoCoche = lista.get(lista.size() - 1);
final Coche penultimoCoche = lista.get(lista.size() - 2);
if( ultimoCoche == (penultimoCoche) ) {
LOGGER.info("El ultimo coche y penultimo son iguales");
final StringBuilder sb = new StringBuilder()
.append("Ultimo coche: ")
.append(ultimoCoche)
.append("\nPenultimo coche: ")
.append(penultimoCoche);
LOGGER.info(sb.toString());
} else {
LOGGER.info("El ultimo coche y penultimo son diferentes");
final StringBuilder sb = new StringBuilder()
.append("Ultimo coche: ")
.append(ultimoCoche)
.append("\nPenultimo coche: ")
.append(penultimoCoche);
LOGGER.info(sb.toString());
}
}
}
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();
}
}
import java.util.ArrayList;
/**
*
*/
public class MainClass {
public MainClass() {
final Coche cocheFiesta = new Coche();
cocheFiesta.setMarca("Ford");
cocheFiesta.setMatricula("124141");
cocheFiesta.setKm(80);
cocheFiesta.setModelo("Fiesta");
final Coche cocheFocus = new Coche();
cocheFocus.setMarca("Ford");
cocheFocus.setMatricula("415423");
cocheFocus.setKm(85);
cocheFocus.setModelo("Focus");
final Coche cocheFiat = new Coche();
cocheFiat.setMarca("Fiat");
cocheFiat.setMatricula("4154223");
cocheFiat.setKm(95);
cocheFiat.setModelo("Fiat volador");
final Coche cocheFiat2 = new Coche();
cocheFiat2.setMarca("Fiat");
cocheFiat2.setMatricula("4154223");
cocheFiat2.setKm(95);
cocheFiat2.setModelo("Fiat volador");
final ArrayList<Coche> cocheList = new ArrayList<>();
cocheList.add(cocheFiesta);
cocheList.add(cocheFocus);
/*
* Coches añadidos aqui iguales.
*/
cocheList.add(cocheFiesta);
cocheList.add(cocheFiat);
cocheList.add(cocheFiat);
final ListaCoches listaCoches = new ListaCoches();
listaCoches.setLista(cocheList);
listaCoches.compararFinalConAnterior();
}
public static void main
(String ...
blalbal) { new MainClass();
}
}
salida si los ultimos coches son iguales INFORMACIÓN: El ultimo coche y penultimo son iguales
INFORMACIÓN: Ultimo coche: Auto # :3
Marca: Fiat
Modelo: Fiat volador
Matricula: 4154223
Kilometraje: 95
Penultimo coche: Auto # :3
Marca: Fiat
Modelo: Fiat volador
Matricula: 4154223
Kilometraje: 95
Mira lo que pasa así usemos == o equals
final Coche cocheFiat = new Coche();
cocheFiat.setMarca("Fiat");
cocheFiat.setMatricula("4154223");
cocheFiat.setKm(95);
cocheFiat.setModelo("Fiat volador");
final Coche cocheFiat2 = new Coche();
cocheFiat2.setMarca("Fiat");
cocheFiat2.setMatricula("4154223");
cocheFiat2.setKm(95);
cocheFiat2.setModelo("Fiat volador");
y usamos en la comparacion del metodo compararFinalConAnterior() este serial el resultadoINFORMACIÓN: El ultimo coche y penultimo son diferentes
INFORMACIÓN: Ultimo coche: Auto # :4
Marca: Fiat
Modelo: Fiat volador
Matricula: 4154223
Kilometraje: 95
Penultimo coche: Auto # :3
Marca: Fiat
Modelo: Fiat volador
Matricula: 4154223
Kilometraje: 95
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