Agora é a vez das Collections

Salve, Salve Galera!

Agora é a vês das Collections! Vamos deixar nossa teoria aqui! :lol:

Collection - É a mãe das Colleções, define os métodos de adição, remoção, iterator, size( os principais métodos );

List - É filha da Collection ( List extends Collection ), define mais métodos, sendo que você pode passar o indice indicado qula a posição você esta trabalhando da coleção. Você tem métodos como add(int), get(int) e remove(int). Nesta collection podemos ter elementos repetidos. Implementações mais conhecidas: ArrayList, LinkedList, Vector.

Set - É filha da Collection ( Set extends Collection ), é um conjunto de objetos que não mantém necessariamente uma ordem, logo você não consegue pegar o 5º elemento ou 3º elemento. Não podem existir dois elementos iguais(equals) num mesmo Set. Implementações muis conhecidas: HashSet, TreeSet.

Iterator - Toda collection pode te dar um objeto que implementa esta interface, este objeto sabe exatamente como iteragir(navegar) entre os objetos da collection.

Map - NÃO é filha da Collection, pois trabalha com associação entre objetos(Chaves e Valores). Dada uma chave, você pode recuperar o seu valor. Implementações mais conhecidas: HashMap, HashTable, Properties…

É isso ai Galera! Postem ai O que é interessante para a SCJP!

Valeu!

Atn.
Dennys Fredericci
http://www.dennys.eti.br

Collections Framework

:wink:

Dennys,

Aí vão alguns detalhes que lembrei:

Coleções Set

  • Existe uma interface chamada SortedSet que extends Set, e é esta interface que é implementada por TreeSet

HashSet

  • Os membros não são ordenadas, o que significa que não terão uma ordem definida em suas iterações.
  • Os acessos a seus membros serão tão rápidos quanto o seu método hashCode() for eficiente

LinkedHashSet

  • Os membros são ordenados
  • As iterações são mais rápidas que em HashSet
  • As iterações podem ocorrer pela ordem em que os elementos foram incluídos, ou pela ordem dos acessos

TreeSet

  • Os elemetos são classificados pela ordem natural
  • Aceita a definição de regras de classificação

Coleções List

  • Todas as List são ordenadas

ArrayList

  • Implementa RandomAcess
  • Faz iterações e acessos rápidos
  • Alterações são lentas

Vector

  • Igual a ArrayList, porém mais lenta em virtude de seus métodos serem sincronizados

LinkedList

  • Ideal para implementação de filas e pilhas
  • Alterações são rápidas
  • Iteração é mais lenta que ArrayList
  • Os elementos são duplamente encadeados

Map

  • Existe uma interface chamada SortedMap que extends Map, e é esta interface que é implementada por TreeMap

HashMap

  • Não é ordenada, então não tem uma ordem definida de iteração
  • Permite a existência de uma chave e vários elementos nulos
  • Faz acessos rápidos

Hashtable

  • Igual a HashMap, porém mais lenta porque seus métodos são sincronizados
  • Não permite chaves ou elementos nulos

LinkedHashMap

  • É ordenada
  • Permite a existência de uma chave e vários elementos nulos
  • Faz iterações mais rápidas que HashMap
  • As iterações são feitas pela ordem de inclusão ou acesso

TreeMap

  • Os elementos são classificados na ordem natural
  • Aceita regras para definição da classificação

Espero que as informações sejam úteis! :oops:

Dúvida:

Qndo eu tenho uma HashSet, tem como eu pegar um elemento diretamente, sem utilizar iterator??

[quote=“darkseid”]Dúvida:

Qndo eu tenho uma HashSet, tem como eu pegar um elemento diretamente, sem utilizar iterator??[/quote]

Tem nada… o máximo que você vai conseguir fazer é trasformar seu HashSet em um array e pegar direto…

Atn.
Dennys Fredericci
http://www.dennys.eti.br

puts… entao pq q tem Hash no nome!!!

Se eu não estiver equivocado…

O Hash é de espalhar, misturar… isso é feito utilizando o hasCode() do objeto isso deixa alguns métodos mais rápido como o contains(Object o), ele vai ser rápido na procura de um elemento na collection.

bom… ACHO que é isso…

Atn.
Dennys Fredericci
http://www.dennys.eti.br

questão de prova para discuitr

  1. Quais das coleções abaixo, é a mais indicada para manter uma sequência de objetos, onde esse objetos são frequentemente inseridos e removidos do meio da sequência :?:

a) TreeMap
b) HashSet
c) Vector
d) LinkedList
e) ArrayList

Comente cada item. Depois ponho a resposta e o comentário do livro:
:arrow: “A Programmer’s Guide to Java Certification Second Edition”

Eu iria de HashSet por ser mais rápida!

As demais têm um overhead para mantê-las ordenadas.

:idea: na verdade a minha dúvida ficou entre © (d) e (e) pois tratam-se de colletions que ordem conforme o valor e é de fácil acesso a objetos do meio da sequencia.

:!: na verdade a resposta é LinkedList, pois Vector e ArrayList , segundo o livro, tem um requerem shifting e o Vector além disso é Thread-Safe o q o torna bastante lento

:roll: minha dúvida:
andei fazendo uns teste e verifiquei que qualquer uma das 3 classes (ArrayList,Vector e LinkedList) fazem shiting com o metodo add(Object o) e nao o fazem com o metodo get(index i)

Depois que postei a resposta lembrei que os elementos também serão excluídos no meio da seqüência. Então a minha opção seria TreeMap

TreeMap - mantém os elementos classificados pela chave e possui métodos métodos adequados para a manipulação

HashSet - Não seria ideal, apesar da rápidez nas inclusões, porque seria necessário um iterator para alcançar o elemento a ser excluído

Vector - É semelhante a ArrayList, porém mais lento em virtude dos métodos sincronizados

LinkedList - Muito boa para implementção de filas e pilhas, porém não tem métodos para incluir e excluir no meio da lista

ArrayList - Só dispõe de métodos para inclusão e exclusão no final da lista

Acho que é isso! :wink:

[quote=“fabiostb”]:idea: na verdade a minha dúvida ficou entre © (d) e (e) pois tratam-se de colletions que ordem conforme o valor e é de fácil acesso a objetos do meio da sequencia.

:!: na verdade a resposta é LinkedList, pois Vector e ArrayList , segundo o livro, tem um requerem shifting e o Vector além disso é Thread-Safe o q o torna bastante lento

:roll: minha dúvida:
andei fazendo uns teste e verifiquei que qualquer uma das 3 classes (ArrayList,Vector e LinkedList) fazem shiting com o metodo add(Object o) e nao o fazem com o metodo get(index i)[/quote]

LinkedList!?!?! 8O

Acho que uma lista ligada não serial, ou o livro está errado ou eu… uma lista ligada não poderia ser… ela não é muito boa quando trabalha com os elementos que não sejam de suas estremidades…

Atn.
Dennys Fredericci
http://www.dennys.eti.br

[quote=“Robson”]Depois que postei a resposta lembrei que os elementos também serão excluídos no meio da seqüência. Então a minha opção seria TreeMap

TreeMap - mantém os elementos classificados pela chave e possui métodos métodos adequados para a manipulação

[/quote]

Acho que é isso tb… é bem mais rápida que a LinkedList neste contexto… é só passar a chave e pronto…

Atn.
Dennys Fredericci
http://www.dennys.eti.br

:oops: agora a coisa ficou polemica, o livro de uma coisa e cada um de vcs outra e eu pensava outra, huahahuahuahuauh :oops: