Dúvidas com ArrayList

12 respostas
Reilander

Bom galera, to com uma dúvida no uso do ArrayList:

Quero fazer uma agenda telefônica simples, que use o ArrayList. Quero também implementar um método que retorne um array com todos os contatos. Aí vem a dúvida: o ideal é retornar um array mesmo ou uma ArrayList???

Aqui vai um exemplo da parte do código:

public class Agenda 
{
   ArrayList contatos = new ArrayList(); // lista de contatos
   .
   .
   .

   // aqui eu devo retornar Contato[] ou um ArrayList???
   public Contato[] todosOsContatos()
   {
      return (Contato)contatos; // Erro: tipos incompatíveis
   }
} // fim Agenda
Outra coisa: como faço pra, num ArrayList, capturar os objetos e guardá-llos num array mesmo? Eu usei o métod "toArray()" de ArrayList e não compilou. Esse método realmente retorna um array dos objetos, ou eu que estou ficando maluco?

Galera, valeu mesmo, estou no aguardo!

12 Respostas

herbertins

cara pq tu nao reescreve o metodo tostring da classe object.

e retorna já mostrando a lista

T
public class Agenda 
 {
    /**
     * Lista de contatos
     */
    List<Contato> contatos = new ArrayList<Contato>(); // lista de contatos
    .
    .
    .
 
    /**
      * @return Uma lista de todos os contatos
      */
    public List<Contato> todosOsContatos()
    {
       return contatos; 
    }
 }
Reilander

Mas aí po, eu vou estar amarrando o método à impressão. Quero apenas que ele retorne os contatos e quem chamou faz o quiser com ele

herbertins

esse codigo acima vai dar um erro pq vc está retornando um arraylist, e o seu metodo fala que vc vai devolver um array.

faça isso

31/01/2007 13:36:19 Assunto: Dúvidas com ArrayList

--------------------------------------------------------------------------------

Bom galera, to com uma dúvida no uso do ArrayList:

Quero fazer uma agenda telefônica simples, que use o ArrayList. Quero também implementar um método que retorne um array com todos os contatos. Aí vem a dúvida: o ideal é retornar um array mesmo ou uma ArrayList???

Aqui vai um exemplo da parte do código:

public class Agenda 
 {
    ArrayList contatos = new ArrayList(); // lista de contatos
    .
    .
    .
 
    // aqui eu devo retornar Contato[] ou um ArrayList???
    public ArrayList todosOsContatos()
    {
       return contatos; // nao vai mais precisar do casting
    }
 } // fim Agenda
herbertins

não vai está amarrando o metodo não, pq ele vai retornar contato, e fora do metodo vc pode chamar o metodo e usar o tostring.

mais isso eh uma coisa que vai depender muito da aplicaçao se vc acha que nao eh nescessario eh soh devolver o arrayList mesmo.

Reilander

E quanto ao método toArray() de ArrayList? O que realmente ele faz?
E pq em muitos exemplos lidos, eu vejo autores declarando ArrayList numa variável do tipo List, assim como fez o brother ai de cima?
Vlw

T

Reilander:
E quanto ao método toArray() de ArrayList? O que realmente ele faz?
E pq em muitos exemplos lidos, eu vejo autores declarando ArrayList numa variável do tipo List, assim como fez o brother ai de cima?
Vlw

a) Ele faz o que tem de fazer, mas você tem de saber chamá-lo. Exemplo:

List<Contato> contatos = new ArrayList<Contato>();
contatos.add (new Contato (...));
contatos.add (new Contato (...));
Contato[] arrayContatos = (Contato[]) contatos.toArray (new Contato[0]);
T

b) List é uma interface (a principal interface) que a classe ArrayList implementa.

De modo geral, para criar variáveis, use a interface que você deseja usar, não a classe.

herbertins

entao, é pq o array list eh uma list entendeu heheh, não neh vo explicar melhor.

vc nao deve conhecer o conceito de interface neh, entao no java existe uma parada que se chama inteface, e o que ela faz? define interfaces. hehe tah meio confuso ainda neh.

mais assim uma interface eh como se fosse um contrato certo dentro dessa interface existe varios metodos, mais esses metodos nao sao implementados.

entao quando uma classe quer ser uma list ela eh obrigada a implemetar todos os metodos da inteface list

entao posso dizer que um ArrayListe é uma List.

um vector tbm é uma List.

essas duas classe implementam a inteface List. ow seja eles possuem os mesmos metodos. soh que cada um trabalha de um jeito diferente.

cara nao sei se fui claro acho que nao hduahsud mais qualquer coisa dah uma pesquisada sobre interface

Reilander

hum… to ligado sim po… vc declara uma interface com métodos abstratos, nao implementados, e quem implentar essa classe, ou redefine os métodos ou entao tem de ser declarada como uma classe abstrata, e deixar a implentação pra quem herdar dela. Mas a pergunta eh: qual a necessidade de ser do tipo List? Claro que uma subclasse é uma superclasse, mas, nesse caso, qual proveito eu tiro de declarar a varialvel como do tipo List e nao do proprio tipo ArrayList?
Vlws man, aa te add no msn tb pra gente bater um papo melhor

Reilander

Gente, xo pertubar so mais um pouquinho…
o Thingol, vem k, pra que aquele argumento no método toArray()?
qual sentido de “new Contato[0]”???
Vlws

herbertins

cara o bom de usaar o nome da interface no lugar de usar o proprio nome da classe ehh.

que na hora que vc estiver rodando sua aplicação e vc pensaa. putz fico lerdo usar o ArrayList, vou usar o LinkedList, vc simplesmente vai lah e troca o new ArrayList para o new LinkedList.

e como vc está usando interface vc nao pode usar um metodo que nao esteja na interface, entaooo !!! nao sera nescessario alterar nenhum metodo entendeu..

e se no caso vc quer ter uma classe que imprimi listas

vc vai fazer assim

class ImprimeQualquerLista {

    void vouImprimir(List l){

           l.get();
     }
}

vc percebeu que ai no metodo vouImprimir, pouco importa qual vai ser o objeto que ele vai manda, ele pode mandar vector, arraylist, linkedlist, qualquer coisa. e para o metodo tbm POUCO IMPORTA qual metodo get ele vai chamar. Ele pode chamar o get da classe vector, da linkedList, etc....

valew abs cara

Criado 31 de janeiro de 2007
Ultima resposta 31 de jan. de 2007
Respostas 12
Participantes 3