ResumosMIEI

Uma coleção de resumos, para ajudar os que precisam daquele empurrão.


Project maintained by mendess Hosted on GitHub Pages — Theme by mattgraham

Collections

As collections de Java permitem-nos abstrair o comportamento habitual de guardar os nosso objetos em arrays, arvores, hastables, etc. Estes padrões de programação são tão comuns que não vale a pena estar sempre a definilos.

Neste documento vou falar de Collection e Map, que não é uma collection mas serve um proposito similar.

Nota: Este resumo assume que os conceitos de Hierarquia de Classes estão bem compreendidos.

Nota: Este resumo apenas apresenta uma reduzida lista de classes e metodos de forma exemplificativa. Existem muitas mais classes e metodos.

Hierarquia de classes das collections

A API das Collections disponibiliza as seguintes classes: (Existem mais, este é apenas um pequeno exemplo)

                                  +-------------------------------+
                    +------------>|        Collection<E>          |<------+
                    |             +-------------------------------+       |
                    |                ^                                    |
                    |                |                                    |
                    |                |                                    |
               +---------+      +----------+                          +--------+
      ++======>| List<E> |      | Queue<E> |<=====++                  | Set<E> |<====++
      ||       +---------+      +----------+      ||                  +--------+     ||
      ||             ^^            ^^             ||                     ^^          ||
      ||             ||            ||             ||                     ||          ||
      ||             ||            ||             ||                     ||          ||
++==============++  ++===============++ ++==================++  ++============++   +--------------+
|| ArrayList<E> ||  || LinkedList<E> || || PriorityQueue<E> ||  || HashSet<E> ||   | SortedSet<E> |
++==============++  ++===============++ ++==================++  ++============++   +--------------+
                                                                       ^                  ^^
                                                                       |                  ||
                                                                       |                  ||
                                                          ++==================++   ++============++
                                                          || LinkedHashSet<E> ||   || TreeSet<E> ||
                                                          ++==================++   ++============++
Legenda:
++==++                        ^^  ==>
||  ||  -> Classe             ||       -> Implements
++==++                        ||

+----+                         ^ -->
|    |  -> Interface           |       -> Extends
+----+                         |

Podemos consultar a documentação de todas estas para saber que métodos temos disponíveis:

Collection

A interface Collection garante que todas as classes que a implementam disponibilizam, entre outros, métodos para adicionar, verificar a existência e remover elementos.

Ambos retornando true se o estado da collection foi alterado.

Que retorna true case o objecto esteja contido na coleção.

List

Esta interface que estende a Collection adiciona, entre outros, métodos com a noção de índice, muito analogo a um array:

ArrayList

A implementação de lista mais usada é o ArrayList. Este exibe o comportamento de um array dinâmico. Disponibilizando assim métodos que esperamos encontrar numa lista que herda.

Map

Um map, ou dicionário, server para guardar pares chave-valor. Efetivamente são uma Hash Table.

Hierarquia de classes do Map

A API do Map disponibiliza as seguintes classes: (Existem mais, este é apenas um pequeno exemplo)

                       +----------------------+
             ++=======>|       Map<K,V>       |<---------+
             ||        +----------------------+          |
             ||                                          |
    ++================++                        +-------------------+
    ||  HashMap<K,V>  ||                        |   SortedMap<K,V>  |
    ++================++                        +-------------------+
              ^                                          ^
              |                                          |
              |                                 +-------------------+
   ++====================++                     | NavigableMap<K,V> |
   || LinkedHashMap<K,V> ||                     +-------------------+
   ++====================++                              ^^
                                                         ||
                                                ++=================++
                                                ||   TreeMap<K,V>  ||
                                                ++=================++

Podemos consultar a documentação de todas estas para saber que métodos temos disponíveis:

Map API

A interface Map garante que todas as classes que a implementam disponibilizam, entre outros, métodos para adicionar, verificar a existência, obter e remover elementos

Outros métodos importantes são:

Importante notar que estes métodos podem ter fraco desempenho em algumas implementações da interface, por exemplo HashMap, devido à ineficiência de iterar sobre este tipo de estruturas. Por esta razão, Map não implementa Iterable.