Sopimuspohjainen olio-ohjelmointi
Sopimuspohjainen olio-ohjelmointi 2008-04-15 2008-04-15
(c) 2006-2008 Jouni Smed
(c) 2006-2008 Jouni Smed 1 1
Rajapinta
Rajapinta Collection Collection
public interface
public interface CollectionCollection<E> <E> extendsextends IterableIterable<E> {<E> {
//-- Perusoperaatiot//-- Perusoperaatiot
public intpublic int size(); size();
public booleanpublic boolean isEmpty(); isEmpty();
public booleanpublic boolean contains( contains(ObjectObject o); o);
public booleanpublic boolean add(E o); add(E o); // Ei-pakollinen// Ei-pakollinen
public booleanpublic boolean remove( remove(ObjectObject o); o); // Ei-pakollinen// Ei-pakollinen
publicpublic IteratorIterator<E> iterator();<E> iterator();
//-- Kokoelmiin liittyvät operaatiot//-- Kokoelmiin liittyvät operaatiot
public booleanpublic boolean containsAll( containsAll(CollectionCollection<?> c);<?> c);
public booleanpublic boolean addAll( addAll(CollectionCollection<? <? extendsextends E> c); E> c); // Ei-pakollinen// Ei-pakollinen
public booleanpublic boolean removeAll( removeAll(CollectionCollection<?> c); <?> c); // Ei-pakollinen// Ei-pakollinen
public booleanpublic boolean retainAll( retainAll(CollectionCollection<?> c); <?> c); // Ei-pakollinen// Ei-pakollinen
public voidpublic void clear(); clear(); // Ei-pakollinen// Ei-pakollinen
//-- Taulukko-operaatiot//-- Taulukko-operaatiot
publicpublic ObjectObject[] toArray();[] toArray();
publicpublic <T> T[] toArray(T[] a); <T> T[] toArray(T[] a);
} }
Collection
Collection-rajapinnan -rajapinnan toteuttajat
toteuttajat
List List
LinkedList LinkedList
ArrayList ArrayList
Set Set
HashSet HashSet
TreeSet TreeSet
Queue Queue
PriorityQueue PriorityQueue
Rajapinta Rajapinta Map Map
public interface public interface MapMap<K,V> {<K,V> {
//-- Perusoperaatiot.//-- Perusoperaatiot.
publicpublic V put(K key, V value); V put(K key, V value);
publicpublic V get( V get(ObjectObject key); key);
publicpublic V remove( V remove(ObjectObject key); key);
public booleanpublic boolean containsKey( containsKey(ObjectObject key); key);
public booleanpublic boolean containsValue( containsValue(ObjectObject value); value);
public intpublic int size(); size();
public booleanpublic boolean isEmpty(); isEmpty();
//-- Kokoelmaoperaatiot.//-- Kokoelmaoperaatiot.
public voidpublic void putAll( putAll(MapMap<? <? extendsextends K,? K,? extendsextends V> t); V> t);
public voidpublic void clear(); clear();
//-- Näkymät kokoelmiin.//-- Näkymät kokoelmiin.
publicpublic SetSet<K> keySet();<K> keySet();
publicpublic CollectionCollection<V> values();<V> values();
publicpublic SetSet<<MapMap..EntryEntry<K,V>> entrySet();<K,V>> entrySet();
//-- Sisärajapinta joka mallintaa kokoelmaan talletettuja alkioita.//-- Sisärajapinta joka mallintaa kokoelmaan talletettuja alkioita.
public interfacepublic interface EntryEntry<K,V> {<K,V> {
publicpublic K getKey(); K getKey();
publicpublic V getValue(); V getValue();
publicpublic V setValue(V value); V setValue(V value);
} } } }
Map-rajapinnan toteuttajat Map-rajapinnan toteuttajat
HashMap HashMap
TreeMap TreeMap
Esimerkki:
Esimerkki: Frekvenssi Frekvenssi
public class
public class FrekvenssiFrekvenssi { {
public static voidpublic static void main( main(StringString... komentorivi) {... komentorivi) {
MapMap<<StringString,,IntegerInteger> esiintymät => esiintymät =
newnew HashMapHashMap<<StringString,,IntegerInteger>();>();
forfor ( (StringString sana : komentorivi) { sana : komentorivi) {
intint määrä = (esiintymät.containsKey(sana) ? määrä = (esiintymät.containsKey(sana) ? esiintymät.get(sana) : 0);
esiintymät.get(sana) : 0);
esiintymät.put(sana, määrä + 1);
esiintymät.put(sana, määrä + 1);
} }
SystemSystem.out.println(.out.println("Erilaisia sanoja löytyi ""Erilaisia sanoja löytyi " + + esiintymät.size() + esiintymät.size() + " kpl."" kpl."););
SystemSystem.out.println(.out.println("Niiden frekvenssit ovat ""Niiden frekvenssit ovat " + +
esiintymät); esiintymät);
} } } }
Apuluokka
Apuluokka Collections Collections
Luokkarutiineja, mm. Luokkarutiineja, mm.
kopiointi kopiointi
sekoittaminen sekoittaminen
lajittelu lajittelu
täyttö täyttö
minimin ja maksimin haku minimin ja maksimin haku
Kuoria, mm. Kuoria, mm.
synkronointikuori ( synkronointikuori (synchronization synchronization wrapper
wrapper) )
jäädytyskuori ( jäädytyskuori (unmodifiable wrapper unmodifiable wrapper) )
Sopimuspohjainen olio-ohjelmointi
Sopimuspohjainen olio-ohjelmointi 2008-04-15 2008-04-15
(c) 2006-2008 Jouni Smed
(c) 2006-2008 Jouni Smed 2 2
Kokoelmarajapinnat ja niiden Kokoelmarajapinnat ja niiden toteutukset tietorakenteina toteutukset tietorakenteina
LinkedList LinkedList LinkedList
LinkedList Linkitetty lista
Linkitetty lista
PriorityQueue PriorityQueue KekoKeko
TreeMap TreeMap TreeSet
TreeSet Punamustapuu Punamustapuu
ArrayList ArrayList Mukautuva
Mukautuva taulukko taulukko
HashMap HashMap HashSet
HashSet Hajautustaulu Hajautustaulu
MapMap Queue
Queue ListList
SetSet