Foro sobre Java SE > Datos duplicados en un ArrayList
Hola,
Pues yo haría algo asi. Y llamaría a este metodo para introducir un nuevo cliente. No es la forma más optima de hacerlo, pero creo que es sencillo de entender y de adaptarlo a tu gusto.
ArrayList<Cliente> clientes; // entiendo que tendrás un array de clientes en alguna parte
public String addCliente(Cliente cliente) {
boolean existe = false;
String respuesta="";
for (Cliente c: clientes){
if(c.getId() == cliente.getId()){
existe = true;
}
}
if(existe){
respuesta = "El cliente ya existe"
}else{
clientes.add(cliente);
respuesta = "Cliente añadido ok"
}
return respuesta;
}
Saludos, espero que te ayude,
Oldskultxo
estimado ne entendi la escencia de tu codigo pero mas alla quede un poco colgado mira estos son las clases que tengo
Clase cliente
public class Cliente {
private String id_cliente;
private String nombre;
private String apellido;
private String celular;
private String telefono;
private String direccion;
public Cliente(String id_cliente, String nombre, String apellido, String celular, String telefono, String direccion) {
this.id_cliente = id_cliente;
this.nombre = nombre;
this.apellido = apellido;
this.celular = celular;
this.telefono = telefono;
this.direccion = direccion;
}
public Cliente(){
}
public String getId_cliente() {
return id_cliente;
}
public void setId_cliente(String id_cliente) {
this.id_cliente = id_cliente;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getApellido() {
return apellido;
}
public void setApellido(String apellido) {
this.apellido = apellido;
}
public String getCelular() {
return celular;
}
public void setCelular(String celular) {
this.celular = celular;
}
public String getTelefono() {
return telefono;
}
public void setTelefono(String telefono) {
this.telefono = telefono;
}
public String getDireccion() {
return direccion;
}
public void setDireccion(String direccion) {
this.direccion = direccion;
}
public String MuestraDatos(){
return "Id Cliente: " + this.getId_cliente() + " Nombre: " + this.getNombre() + " " + " Apellido: " + this.getApellido() + " " + " Telefono fijo: " + this.getTelefono() + " " + " Telefono celular: " + this.getCelular() + " " + " Direccion: " + this.getDireccion() + " " + "\n";
}
}
Clase listado clientes
package poo;
import java.util.ArrayList;
public class ListadoClientes {
public ArrayList<Cliente> lista = new ArrayList<Cliente>();
public void AgregarCliente(Cliente cliente){
lista.add(cliente);
}
}
y el jframe que recibe los datos
import javax.swing.JOptionPane;
public class Ingresar extends javax.swing.JFrame {
public ListadoClientes lista = new ListadoClientes();
public Ingresar() {
initComponents();
tx_carrier.enable(false);
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
tx_id = new javax.swing.JTextField();
tx_nombre = new javax.swing.JTextField();
tx_apellido = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
tx_fijo = new javax.swing.JTextField();
tx_celular = new javax.swing.JTextField();
jLabel6 = new javax.swing.JLabel();
tx_carrier = new javax.swing.JTextField();
tx_direccion = new javax.swing.JTextField();
bt_ingresar = new javax.swing.JButton();
bt_buscar = new javax.swing.JButton();
bt_reset = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
ta_mostrar = new javax.swing.JTextArea();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("Id_cliente");
jLabel2.setText("Nombre");
jLabel3.setText("Apellido");
tx_id.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent evt) {
tx_idKeyTyped(evt);
}
});
jLabel4.setText("Telefono fijo");
jLabel5.setText("Telefono celular");
tx_fijo.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
tx_fijoKeyPressed(evt);
}
public void keyTyped(java.awt.event.KeyEvent evt) {
tx_fijoKeyTyped(evt);
}
});
tx_celular.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent evt) {
tx_celularKeyTyped(evt);
}
});
jLabel6.setText("Direccion");
tx_carrier.setText("09");
bt_ingresar.setText("Ingresar");
bt_ingresar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
bt_ingresarActionPerformed(evt);
}
});
bt_buscar.setText("Busqueda");
bt_reset.setText("Reset Telefono");
ta_mostrar.setColumns(20);
ta_mostrar.setRows(5);
jScrollPane1.setViewportView(ta_mostrar);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(21, 21, 21)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel6)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1)
.addComponent(tx_id, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(50, 50, 50)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel2)
.addComponent(tx_nombre, javax.swing.GroupLayout.PREFERRED_SIZE, 74, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel3)
.addComponent(tx_apellido, javax.swing.GroupLayout.PREFERRED_SIZE, 88, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addContainerGap())
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel4)
.addComponent(tx_fijo, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(40, 40, 40)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(tx_carrier, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(tx_celular, javax.swing.GroupLayout.PREFERRED_SIZE, 102, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(92, 92, 92))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel5)
.addGap(0, 0, Short.MAX_VALUE))))
.addGroup(layout.createSequentialGroup()
.addComponent(tx_direccion, javax.swing.GroupLayout.PREFERRED_SIZE, 255, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(bt_ingresar)
.addGap(0, 0, Short.MAX_VALUE))))
.addGroup(layout.createSequentialGroup()
.addGap(59, 59, 59)
.addComponent(bt_buscar)
.addGap(88, 88, 88)
.addComponent(bt_reset)
.addGap(0, 0, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(27, 27, 27)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(jLabel2)
.addComponent(jLabel3))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(tx_id, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tx_nombre, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tx_apellido, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel4)
.addComponent(jLabel5))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(tx_celular, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(tx_fijo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tx_carrier, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGap(18, 18, 18)
.addComponent(jLabel6)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(tx_direccion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(bt_ingresar))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(bt_buscar)
.addComponent(bt_reset))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 173, Short.MAX_VALUE)
.addContainerGap())
);
pack();
}// </editor-fold>
private void bt_ingresarActionPerformed(java.awt.event.ActionEvent evt) {
String nombre = tx_nombre.getText();
String apellido = tx_apellido.getText();
String celular = tx_celular.getText();
String direccion = tx_direccion.getText();
String id = tx_id.getText();
String fijo = tx_fijo.getText();
if(nombre.length() == 0 || apellido.length() == 0 || celular.length() == 0 || id.length() == 0 ){
JOptionPane.showMessageDialog(this,"Error uno de los campos esta vacio","Error",JOptionPane.ERROR_MESSAGE);
}
if(nombre.length() < 3 || apellido.length() < 3 ){
JOptionPane.showMessageDialog(this, "Error de de caracteres, nombre o apellido demasiado corto ","Error",JOptionPane.ERROR_MESSAGE);
}
if (direccion.length() < 5 ){
JOptionPane.showMessageDialog(this, "Error de de caracteres, direccion demasiado corta ","Error",JOptionPane.ERROR_MESSAGE);
}
if (celular.equals(fijo)){
JOptionPane.showMessageDialog(this, "Error, el celular y el telefono fijo son iguales ","Error",JOptionPane.ERROR_MESSAGE);
}else{
Cliente c= new Cliente();
c.setId_cliente(tx_id.getText());
c.setNombre(tx_nombre.getText());
c.setApellido(tx_apellido.getText());
c.setCelular(tx_celular.getText());
c.setTelefono(tx_fijo.getText());
c.setDireccion(tx_direccion.getText());
lista.AgregarCliente(c);
MuestraDatos();
}
}
al agregar los datos en el jframe y hacer click en el boton ingresar debe validar que el id de cliente ingresado no este guardado en el arreglo es decir si ya ingrese el id 01 y lo quiero volver a ingresar que me lo impida y me diga el error que estoy cometiendo
por tu tiemnpo y el tiempo de quien se lo de para responder agradezco mucho
Hola,
perdona si no estaba claro :
En tu metodo:
public String AgregarCliente(Cliente cliente){
boolean existe = false;
String respuesta="";
for (Cliente c: clientes){
if(c.getId() == cliente.getId()){
existe = true;
}
}
if(existe){
respuesta = "Cliente añadido ok"
lista.add(cliente);
}else{
respuesta = "Cliente añadido no ok"
}
return respuesta;
}
Estoy desarrollando un trabajo en netbeans en donde debo crear una arreglo de ingreso de clientes, una clase cliente y un jframe que permita el ingreso de los datos, los datos pedidos son:
- Id cliente
- Nombre
- Apellido
- Telefono fijo
- Telefono de celular
- Direccion
Tengo desarrollada las clases y el jframe, pero tengo el siguiente problema:
al presionar el boton ingresar, ingresa los datos en un textarea donde muestra los datos del arreglo, epro una de las condiciones es que no me permita ingresar los datos si el id del cliente ya existe en el arreglo.
mi consulta es como agrego ese codigo y donde, si alguien me puede ayudar lo agradeceria mucho