Java language

package

Un package és un mecanisme per a agrupar classes en espais de noms. El programadors també utilitzen els packages per a organitzar classes que pertanyen a la mateixa categoria o proporcionen funcionalitats semblants.

Un package proporciona un únic espai de noms pels fitxers que conté.

Classes al mateix package tenen accés als membres amb visibilitat 'protected' de les altres.

Un package pot contenir els diferents tipus:

Ús dels packages

Al fitxer de codi font Java, s'especifica amb la paraula clau package el paquet al que pertany el fitxer. Per exemple:

package edu.cou.poo.ex3.MyClass;

Per a fer servir, des d'un fitxer de codi font Java, fitxers pertanyents a un altre package es declara amb la paraula clau import. Per exemple:

import java.util.ArrayList;     //Declaració que indica que farem servir la classe ArrayList del package java.util

import java.util.*;                 //Declaració que indica que farem servir una o més classes del package java.util

Visibilitat

Classes pertanyents a un mateix package poden accedir a les classes i als membres declarats amb visibilitat

default (per defecte) i a membres de classes declarats amb visibilitat protected (protegit).

S'enforça la visibilitat 'default' quan no s'especifica a la declaració cap modificador de visibilitat: ni public, protected ni private.

Pel contrari, classes a d'altres packages no poden accedir a les classes i membres declarats amb visibilitat 'default'. Els membres de les classes declarats com a protected poden ser accedits des de les classes en el mateix package així com en d'altres packages que siguin sublcasses de la classe declarant.

Collections Framework

A collection is an object that represents a group of objects (such as the classic ArrayList class). A collections framework is a unified architecture for representing and manipulating collections, enabling collections to be manipulated independently of implementation details.


Diagram Collection hierarchy (JDK 21)

https://www.happycoders.eu/wp-content/uploads/2023/06/sequencedcollection-sequencedset-java-21-800x589.png

Diagram Map hierarchy (JDK 21)

https://www.happycoders.eu/wp-content/uploads/2023/06/sequencedmap-java-21-400x481.png


Package java.util:

        (***) means top level collection sub interface

       (+++) means top level map sub interface


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

Collection ({duplicate, no order} collection root interface)

The root interface in the collection hierarchy.

Set ({no duplicate, no order} collection root interface) ***

A collection that contains no duplicate elements.

SequencedCollection ({duplicate, ordered} collection root interface) ***

A collection that has a well-defined encounter order, that supports operations at both ends, and that is reversible.

Queue ({duplicate, no order}) ***

A collection designed for holding elements prior to processing.

SequencedSet <<interface>> ({no duplicate, ordered})

A collection that is both a SequencedCollection and a Set.

SortedSet <<interface>> ({no duplicate, ordered})

Elements are ordered by natural ordering or Comparator provided.

NavigableSet <<interface>> ({no duplicate, ordered})

A SortedSet extended with navigation methods reporting closest matches for given search targets. Methods lower(E), floor(E), ceiling(E), and higher(E) return the element respectively less than, less than or equal, greater than or equal, and greater than a given element, returning null if there is no such element. 

LinkedHashSet <<implementation>> (no duplicate, ordered)

Hash table and linked list implementation of the Set interface, with well-defined encounter order.

List (duplicate, ordered)

An ordered collection, where the user has precise control over where in the list each element is inserted.

Deque ({duplicate, no order})

A linear collection that supports element insertion and removal at both ends. The name deque is short for "double ended queue" and is usually pronounced "deck".

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

Map ({no order} map root interface)

An object that maps keys to values.

SequencedMap ({ordered} map root interface) +++

A Map that has a well-defined encounter order, that supports operations at both ends, and that is reversible.

SortedMap ({ordered})

A Map that further provides a total ordering on its keys. The map is ordered according to the natural ordering of its keys, or by a Comparator provided.

NavigableMap ({ordered})

A SortedMap extended with navigation methods returning the closest matches for given search targets. Methods lowerEntry(K), floorEntry(K), ceilingEntry(K), and higherEntry(K) return Map.Entry objects associated with keys respectively less than, less than or equal, greater than or equal, and greater than a given key, returning null if there is no such key. Similarly, methods lowerKey(K), floorKey(K), ceilingKey(K), and higherKey(K) return only the associated keys.

LinkedHashMap <<implementation>> ({ordered})

Hash table and linked list implementation of the Map interface, with well-defined encounter order.

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