Skip to content
Snippets Groups Projects
Commit 13708fa4 authored by Joonatan Kaija's avatar Joonatan Kaija
Browse files

epätoivoista koodailua

parent 8a8bc36d
No related branches found
No related tags found
No related merge requests found
......@@ -20,9 +20,25 @@ public class Main {
*/
System.out.println("*** Harjoitustyöpohja käynnistyy ***");
/*
HashSet<Ajoneuvo> ajoneuvot = new HashSet<Ajoneuvo>();
HashSet<HenkiloAuto> henkiloautot = new HashSet<HenkiloAuto>();
HashSet<KuormaAuto> kuormaautot = new HashSet<KuormaAuto>();
*/
Map<String, String> alkuperäinen = new HashMap<>();
originalMap.put("avain1", "arvo1");
originalMap.put("avain2", "arvo2");
originalMap.put("avain3", "arvo3");
Map<String, String> randomMap = new RandomMap<>(originalMap);
String value1 = randomMap.get("key1"); // Palauttaa "value1"
String value2 = randomMap.get("key4"); // Palauttaa satunnaisen arvon alkuperäisestä arvojoukosta
System.out.println(value1);
System.out.println(value2);
}
}
}
package fi.utu.tech.ooj.exercise3;
import java.util.*;
//Demonstraatio main luokassa
public class RandomMap<K, V> implements Map<K, V> {
private Map<K, V> AlkuperäinenMap;
private Random random;
public RandomMap(Map<K, V> AlkuperäinenMap){
this.AlkuperäinenMap = AlkuperäinenMap;
this.random = new Random();
}
@Override
public int size() {
return 0;
}
@Override
public boolean isEmpty() {
return false;
}
@Override
public boolean containsKey(Object key) {
return false;
}
@Override
public boolean containsValue(Object value) {
return false;
}
@Override
public V get(Object key) {
if (AlkuperäinenMap.containsKey(key)) {
return AlkuperäinenMap.get(key);
} else {
List<V> values = new ArrayList<>(AlkuperäinenMap.values());
if (!values.isEmpty()) {
int randomIndex = random.nextInt(values.size());
return values.get(randomIndex);
}
}
return null;
}
@Override
public V put(K key, V value) {
return null;
}
@Override
public V remove(Object key) {
return null;
}
@Override
public void putAll(Map<? extends K, ? extends V> m) {
}
@Override
public void clear() {
}
@Override
public Set<K> keySet() {
return null;
}
@Override
public Collection<V> values() {
return null;
}
@Override
public Set<Entry<K, V>> entrySet() {
return null;
}
}
1.
A) Map ja Collection eroavat sillä tavalla, että Mapissa on omat avain-arvo
parit, toisinkuin Collectionissa, joka on vain joukko arvoja ilman tiettyjä
avaimia jokaiselle arvolle. Mappia voitaisiin käyttää esimerkiksi kilpailu-
suoritusten tallennukseen, esimerkiksi siten, että urheilija on avain, ja
aika on arvo. Collectionia taas voitaisiin käyttää johonkin paljon epämääräisempään
tietojen tallennukseen, esimerkiksi vaikkapa lottonumeroiden säilömiseen
arvontaa varten.
B) List on organisoitu joten voimme itse päättää mihin kohtaan listaa
halutaan laittaa asioita.
Set taas ei välitä järjestyksestä, ja se ei saa
sisältää kopioita jo siellä olevista alkioista. Set on myös tyypiltään
rajapinta.
Queue eroaa siten että se toimii FIFO periaatteella, eli First in, First out
Jonoja voitaisiin käyttää nimensä mukaan vaikkapa johonkin jonotussovellukseen
esimerkiksi vaikkapa nettikaupan yhteydessä.
Setillä voisi vaikka mallintaa nettikaupan inventaariota, sillä se ei salli
sinne lisättävän jo sisällä olevia alkioita.
List on näistä ns "karvalakkimalli" joten sitä käyttäisin silloin kun joku
spesifimpi vaihtoehto ei sovi.
C)Linkedlist on nopeampi datan manipulaatiossa kuin Arraylist. Kummatkin
perivät Listin mutta LinkedList perii myös Queuen. LinkedList on parempi
datan manipulaatiossa, sillä se on lineaarinen data-struktuuri, jonka alkiot
eivät ole vierekkäin tallennettu, toisinkuin ArrayListissä. Tämän takia
kun ArrayListiä muutetaan, täytyy muuttaa jokaisen muun alkion muistiosoitetta
Jos tarvitsee siis vain säilöä ja päästä käsiksi dataan, on ArrayList parempi
mutta jos haluaa myös muuttaa sitä, kannattaa käyttää LinkedListiä.
D)Fundamentaalinen ero on, että TreeSet on järjestetty, HashSet ei.
5.
A
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment