GARANTIR DESCONTO

Fórum Duvidas com ArrayList.contains() #566088

18/01/2012

0

Bom dia galera, seguinte, estou fazendo um projeto para um amigo e como nao tenho muita experiência na linguagem espero tirar algumas dúvidas. Uma dessas duvidas é: como posso acessar um item no ArrayList? No código abaixo eu cadastrei alguns produtos que conteem nome, preço, quantidade e tamanho, porém na hora de excluir algum deles não consegui, segue o código:
public static void remove(ArrayList<String>lista, Capacete cp){
		exibe(lista, cp);
		String nm="";
		
		nm=JOptionPane.showInputDialog("Digite o nome do produto a ser retirado: ");
		
		for(int i=0; i<lista.size(); i++){
			if(lista.contains(nm)){
				JOptionPane.showMessageDialog(null, "Item "+lista.get(i)+" foi deletado com sucesso.");
				lista.remove(i);
			}//if
		}//for
		
		
	}//remove
agradeço a ajuda! abraços!
Leonardo Narciso

Leonardo Narciso

Responder

Posts

18/01/2012

Lucas Iorio

Estou com sono, mas quando faz CONTAINS ele usa o EQUALS, ele não sabe diferenciar o CAPACETE !! Você terá que sobrescrever o EQUALS da classe Capacete, de uma forma que consiga identificar o item !
Responder

Gostei + 0

18/01/2012

Lucas Iorio

[quote="lucas iorio"]Estou com sono, mas quando faz CONTAINS ele usa o EQUALS, ele não sabe diferenciar o CAPACETE !! Você terá que sobrescrever o EQUALS da classe Capacete, de uma forma que consiga identificar o item !
é isso mesmo. Contains só vai retornar o indice se para dois objetos, um na lista A e outro fora dele B
A.equals(B) //seja true
//&&
B.equals(A) //seja true também
Responder

Gostei + 0

18/01/2012

Douglas Eric

e como faço para excluir uma parte do objeto(contendo nome, tamanho, preço e quantidade), de uma so vez? Confesso que comecei a ver java a pouco tempo e nao tenho tanta experiencia na linguagem.
Responder

Gostei + 0

18/01/2012

Lucas Iorio

O item CAPACETE deveria ter um ID de identificação, mas posta seu código do CAPACETE que tento te ajudar...
Responder

Gostei + 0

18/01/2012

Lucas Iorio

[quote="LeoNarciso"]e como faço para excluir uma parte do objeto(contendo nome, tamanho, preço e quantidade), de uma so vez? Confesso que comecei a ver java a pouco tempo e nao tenho tanta experiencia na linguagem.
Como excluir uma parte do objeto??? não tem como excluir "parte", ou você exclui ou não!
Responder

Gostei + 0

18/01/2012

Douglas Eric

«««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
for(int i=0;i<lista.size();i++){
            if(lista.get(i).contains(nm)){//pega a string na lista e verifica se nm está condida nela
                JOptionPane.showMessageDialog(null, "Item "+lista.get(i)+" foi deletado com sucesso.");
                lista.remove(i);
            }
        }
Penso que deste modo vai fazer o que queres. altera o teu loop e da uma dica para eu saber se funcionou
Responder

Gostei + 0

18/01/2012

Lucas Iorio

[quote="Chandimba"]«««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
for(int i=0;i<lista.size();i++){
            if(lista.get(i).contains(nm)){//pega a string na lista e verifica se nm está condida nela
                JOptionPane.showMessageDialog(null, "Item "+lista.get(i)+" foi deletado com sucesso.");
                lista.remove(i);
            }
        }
Penso que deste modo vai fazer o que queres. altera o teu loop e da uma dica para eu saber se funcionou
note que o [url=http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#contains(java.lang.Object)]contains() da ArrayList[/url] e o [url=http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#contains(java.lang.CharSequence)]constains() de String [/url] não tem nada a ver uma coisa com a outra. Se bem que, até agora eu não entendi o que o capacete tem a ver com a história, eu no inicio pensei que era um ArrayList<Capacete> mas agora percebi que na verdade é um ArrayList<String> então não entendi mais nada.
Responder

Gostei + 0

18/01/2012

Lucas Iorio

[quote="sekkuar"][quote="LeoNarciso"]e como faço para excluir uma parte do objeto(contendo nome, tamanho, preço e quantidade), de uma so vez? Confesso que comecei a ver java a pouco tempo e nao tenho tanta experiencia na linguagem.
Como excluir uma parte do objeto??? não tem como excluir "parte", ou você exclui ou não!
O maior problema é entender o código postado !! Ele pegou um arraylist de string e passou um Capacete sozinho, pelo que entendi ele quer excluir o capacete da lista de acordo com o que o usuario digitar de descricao : Mas teria que mudar o parâmetro do método dele De
ArrayList<String>lista, Capacete cp
Para
ArrayList<Capacete>lista
Seria mais ou menos isso
package com.byiorio;

import java.util.ArrayList;

public class LojaCapacete {
	
	
	public static void main(String[] args) {
		ArrayList<Capacete> lista = new ArrayList<Capacete>();
		lista.add(new Capacete("descr1",2d));
		lista.add(new Capacete("descr2",2d));
		lista.add(new Capacete("descr3",2d));
		lista.add(new Capacete("descr4",2d));
		
		//item a ser removido
		String apagar="descr1";
		
		//apagando
		for (Capacete capacete : lista) {
			if (apagar.equals(capacete.getDescricao())){
				lista.remove(capacete);
				break;
			}
		}
		
		
		//listando
		for (Capacete capacete : lista) {
			System.out.println(capacete.getDescricao());
		}
		
	}
	
}

class Capacete {
	String descricao;
	double preco;

	public Capacete(String descricao, double preco){
		this.descricao = descricao;
		this.preco = preco;
	}
	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public double getPreco() {
		return preco;
	}

	public void setPreco(double preco) {
		this.preco = preco;
	}

}
Responder

Gostei + 0

18/01/2012

Lucas Iorio

Me expressei errado quando disse que queria deletar o capacete, ao invés de deletar o capacete, queria deletar a parte da lista que contem o nome da busca. simples, voce digita o nome do produto e se ele existir, ele é deletado da lista. segue o código completo:
package NetoCapacetes_POO_Package;

import java.util.ArrayList;

import javax.swing.JOptionPane;


public class PrincipalNetoCapacete {

	
	public static void main(String args[]){
		ArrayList<String> lista = new ArrayList<String>();
		Capacete cp=new Capacete();
		
		
		menu(lista, cp);
		
	}//main
	
	private static void menu(ArrayList<String> lista, Capacete cp){
		int opc;
		String opçãostring;
		int repetir=1;
		
		while(repetir==1){
		opçãostring=JOptionPane.showInputDialog(
		    "* * * * *     EBF CAPACETES     * * * * *\n" + 
		    "\n" + 
		    "-----     MENU     -----\n" + 
		    "1 - CADASTRO DE PRODUTOS\n" + 
		    "2 - RETIRADA DE PRODUTOS\n" + 
		    "3 - ESTOQUE GERAL\n" + 
		    "4 - EXIBIR PRODUTOS CADASTRADOS\n" + 
		    "\n" + 
		    "DIGITE O NUMERO REFERENTE A OPÇÃO DESEJADA: ");
		opc=Integer.parseInt(opçãostring);//pegando a string e convertendo o valor para inteiro.
		
		if(opc==1){
			cadastro(lista, cp);
		}//opc==1
		
		if(opc==2){
			remove(lista, cp);
		}//opc==2
		
		if(opc==4){
			exibe(lista,cp);
		}//opc==4
		}//while
	}//menu
	
	
	public static void cadastro(ArrayList<String> lista, Capacete cp){
		cp.nome=JOptionPane.showInputDialog("Digite o nome do produto: ");
		lista.add(cp.nome);
		cp.quantidade=JOptionPane.showInputDialog("Digite a quantidade de itens do produto "+cp.nome+":");
		lista.add(cp.quantidade);
		cp.tamanho=JOptionPane.showInputDialog("Digite o tamanho do produto "+cp.nome+":");
		lista.add(cp.tamanho);
		cp.preco=JOptionPane.showInputDialog("Digite o preço do produto "+cp.nome+":");
		lista.add(cp.preco);
		
		System.out.println(lista.size());
		}//cadastro	
	
	
	public static void remove(ArrayList<String>lista, Capacete cp){
		exibe(lista, cp);
		String nm="";
		
		nm=JOptionPane.showInputDialog("Digite o nome do produto a ser retirado: ");
		
		for(int i=0; i<lista.size(); i++){
			 if(lista.get(i).equals(cp.getNome())){
				JOptionPane.showMessageDialog(null, "Item "+lista.get(i)+" foi deletado com sucesso.");
				lista.remove(i);
			}//if
		}//for
		
		
	}//remove
	
	public static void exibe(ArrayList<String> lista, Capacete cp){
		
		
			JOptionPane.showMessageDialog(null, lista);
		
	
	}//exibe
	
	
	
	
}//principalnetocapacetes

[quote="[color=darkgreen][i]2012-01-21[/i] mensagem editada por [i][url=http://javafree.uol.com.br/viewprofile.jbb?u=5274]simu[/url][/i][/color]"][color=green] - quebra de linha uito longas no código. [/color]
Responder

Gostei + 0

18/01/2012

Douglas Eric

putz cara... mas que código é esse?? nuss. Nem tenho palavras para me expressar sem levar um processo por danos morais...
Responder

Gostei + 0

18/01/2012

Lucas Iorio

[quote="sekkuar"]putz cara... mas que código é esse?? nuss. Nem tenho palavras para me expressar sem levar um processo por danos morais...
confesso que não entendi =/ :amigos:
Responder

Gostei + 0

18/01/2012

Lucas Iorio

[quote="lucas iorio"][quote="sekkuar"]putz cara... mas que código é esse?? nuss. Nem tenho palavras para me expressar sem levar um processo por danos morais...
confesso que não entendi =/ :amigos:
Tah. primeiro, a classe dele tem uma unica instancia de Capacete que é reutilizada mas nunca é salva em lugar algum. Ele tem uma lista de Strings que, não salvam apenas um tipo de informação, ela grava todas as informações dos capacetes, sequencialmente (igual porta serial?), valores de tipos diferentes, mas todos como String. Depois, ele quer apagar o nome do capacete, mas, de alguma forma milagrosa, quer que todas as informações daquele capacete sejam apagadas também, sendo que na lista, elas não estão relacionadas de forma alguma. PS: lucas iorio, o seu código está certo e bonito, estou me referindo ao código do dono do tópico. (as vezes os posts demoram pra aparecer no fórum, cache de navegador ou algo assim)
Responder

Gostei + 0

18/01/2012

Douglas Eric

[quote="sekkuar"]putz cara... mas que código é esse?? nuss. Nem tenho palavras para me expressar sem levar um processo por danos morais...
umas das primeiras coisas que eu falei nesse tópico e chamei a atenção é a falta de conhecimento na linguagem, estou aqui para tirar dúvidas e aprender, ok?
Responder

Gostei + 0

18/01/2012

Lucas Iorio

[quote="sekkuar"][quote="lucas iorio"][quote="sekkuar"]putz cara... mas que código é esse?? nuss. Nem tenho palavras para me expressar sem levar um processo por danos morais...
confesso que não entendi =/ :amigos:
Tah. primeiro, a classe dele tem uma unica instancia de Capacete que é reutilizada mas nunca é salva em lugar algum. Ele tem uma lista de Strings que, não salvam apenas um tipo de informação, ela grava todas as informações dos capacetes, sequencialmente (igual porta serial?), valores de tipos diferentes, mas todos como String. Depois, ele quer apagar o nome do capacete, mas, de alguma forma milagrosa, quer que todas as informações daquele capacete sejam apagadas também, sendo que na lista, elas não estão relacionadas de forma alguma. PS: lucas iorio, o seu código está certo e bonito, estou me referindo ao código do dono do tópico. (as vezes os posts demoram pra aparecer no fórum, cache de navegador ou algo assim) Calmmaa =] eu falei concordando com voce, eu nao entendi o codigo dele aeuhaeuhea !! Se ele nao quer apagar o capacete pq ele compara o capacete com o produto ? Em casa eu teria que rodar o codigo e ver o que acontecesse !!Pq olhando nao entendi
Responder

Gostei + 0

18/01/2012

Douglas Eric

[quote="lucas iorio"] Em casa eu teria que rodar o codigo e ver o que acontecesse !!Pq olhando nao entendi
Ele vai vai apagar só o "nome" do capacete na lista, e vai deixar os outros atributos nela.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar