Skip to content
Snippets Groups Projects
Commit cfadcf01 authored by Eemeli Suojanen's avatar Eemeli Suojanen
Browse files

Tehtävä4

parent d825d7bf
No related branches found
No related tags found
No related merge requests found
package fi.utu.tech.ooj.exercise3;
import java.util.*;
public class Triplet<K, V, W> implements TripletMap<K, V, W> {
private Map<K, Pair<V, W>> map;
public Triplet() {
map = new HashMap<>();
}
public Triplet(K key, V value1, W value2) {
map = new HashMap<>();
put(key, value1, value2);
}
@Override
public void put(K key, V value1, W value2) {
Pair<V, W> pair = new Pair<>(value1, value2);
map.put(key, pair);
}
@Override
public V getFirstValue(K key) {
Pair<V, W> pair = map.get(key);
if (pair != null) {
return pair.getFirst();
}
return null;
}
@Override
public W getSecondValue(K key) {
Pair<V, W> pair = map.get(key);
if (pair != null) {
return pair.getSecond();
}
return null;
}
@Override
public void remove(K key) {
map.remove(key);
}
@Override
public void clear() {
map.clear();
}
@Override
public Set<K> keySet() {
return map.keySet();
}
@Override
public Set<V> firstValues() {
Set<V> firstValues = new HashSet<>();
for (Pair<V, W> pair : map.values()) {
firstValues.add(pair.getFirst());
}
return firstValues;
}
@Override
public Set<W> secondValues() {
Set<W> secondValues = new HashSet<>();
for (Pair<V, W> pair : map.values()) {
secondValues.add(pair.getSecond());
}
return secondValues;
}
@Override
public boolean containsKey(Object key) {
return map.containsKey(key);
}
@Override
public boolean containsValue(Object value1, Object value2) {
Pair<V, W> pairToFind = new Pair<>(null, null);
pairToFind.setFirst((V) value1);
pairToFind.setSecond((W) value2);
for (Pair<V, W> pair : map.values()) {
if (pair.equals(pairToFind)) {
return true;
}
}
return false;
}
@Override
public boolean isEmpty() {
return map.isEmpty();
}
@Override
public int size() {
return map.size();
}
private class Pair<A, B> {
private A first;
private B second;
public Pair(A first, B second) {
this.first = first;
this.second = second;
}
public A getFirst() {
return first;
}
public void setFirst(A first) {
this.first = first;
}
public B getSecond() {
return second;
}
public void setSecond(B second) {
this.second = second;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
Pair<?, ?> pair = (Pair<?, ?>) obj;
return Objects.equals(first, pair.first) && Objects.equals(second, pair.second);
}
@Override
public int hashCode() {
return Objects.hash(first, second);
}
}
// Getterit ja setterit
public K getKey() {
return map.keySet().iterator().next();
}
public void setKey(K key) {
Pair<V, W> pair = map.get(getKey());
map.remove(getKey());
map.put(key, pair);
}
public V getValue1() {
return getFirstValue(getKey());
}
public void setValue1(V value1) {
Pair<V, W> pair = map.get(getKey());
pair.setFirst(value1);
}
public W getValue2() {
return getSecondValue(getKey());
}
public void setValue2(W value2) {
Pair<V, W> pair = map.get(getKey());
pair.setSecond(value2);
}
}
package fi.utu.tech.ooj.exercise3;
import java.util.Set;
public interface TripletMap<K, V, W> {
void put(K key, V value1, W value2);
V getFirstValue(K key);
W getSecondValue(K key);
void remove(K key);
void clear();
Set<K> keySet();
Set<V> firstValues();
Set<W> secondValues();
boolean containsKey(Object key);
boolean containsValue(Object value1, Object value2);
boolean isEmpty();
int size();
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment