Case 1:
I have a List
with a series of elements that can be repeated.
List<String> nombre;
nombre.add("Persona 1");
nombre.add("Persona 1");
nombre.add("Persona 1");
nombre.add("Persona 2");
nombre.add("Persona 3");
...
Using Lambda expressions is it possible to get the elements without repeating?
Departure:
Persona 1
Persona 2
Persona 3
( edited )
Case 2:
public class Persona {
private String nombre;
private int edad;
Persona(String nombre, int edad) {
this.nombre=nombre;
this.edad=edad;
}
... getter y setter
}
List<Persona> p;
p.add(new Persona("Persona 1", 20));
p.add(new Persona("Persona 1", 15));
p.add(new Persona("Persona 1", 12));
p.add(new Persona("Persona 2", 50));
p.add(new Persona("Persona 3", 20));
Departure
Persona 1
Persona 2
Persona 3
In the case of Persona 1
I don't care what object it returns.
Edition 3
public class ConsultaBean {
private static final long serialVersionUID = 6269862033023559153L;
//Datos Cabecera
private String negociador;
private String descripcion;
private String clave;
//Detalle
private Date fecha;
private String hora;
public String getNegociador() {
return negociador;
}
public void setNegociador(String negociador) {
this.negociador = negociador;
}
public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
public String getClave() {
return clave;
}
public void setClave(String clave) {
this.clave = clave;
}
public Date getFecha() {
return fecha;
}
public void setFecha(Date fecha) {
this.fecha = fecha;
}
public String getHora() {
return hora;
}
public void setHora(String hora) {
this.hora = hora;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((clave == null) ? 0 : clave.hashCode());
result = prime * result + ((descripcion == null) ? 0 : descripcion.hashCode());
result = prime * result + ((fecha == null) ? 0 : fecha.hashCode());
result = prime * result + ((hora == null) ? 0 : hora.hashCode());
result = prime * result + ((negociador == null) ? 0 : negociador.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
ConsultaBean other = (ConsultaBean) obj;
if (clave == null) {
if (other.clave != null)
return false;
} else if (!clave.equals(other.clave))
return false;
if (descripcion == null) {
if (other.descripcion != null)
return false;
} else if (!descripcion.equals(other.descripcion))
return false;
if (fecha == null) {
if (other.fecha != null)
return false;
} else if (!fecha.equals(other.fecha))
return false;
if (hora == null) {
if (other.hora != null)
return false;
} else if (!hora.equals(other.hora))
return false;
if (negociador == null) {
if (other.negociador != null)
return false;
} else if (!negociador.equals(other.negociador))
return false;
return true;
}
}
It's easy with streams:
distinct() works based on the equals method of the class type of the list in question.
If I have understood your case, you want to display non-repeating negotiator values: