Merge remote-tracking branch 'origin/master'
commit
dca52ea373
@ -0,0 +1,41 @@
|
|||||||
|
package _6._1;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
public class HashMapMultiSet<T> implements MultiSet<T> {
|
||||||
|
private HashMap<T,Integer> map = new HashMap<>();
|
||||||
|
|
||||||
|
public Iterator<T> iterator() {
|
||||||
|
return new HashMapMultiSetIterator();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void add(T element) {
|
||||||
|
if (map.containsKey(element)) {
|
||||||
|
map.put(element,map.get(element)+1);
|
||||||
|
} else {
|
||||||
|
map.put(element,1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int count(T element) {
|
||||||
|
if (map.containsKey(element)) {
|
||||||
|
return map.get(element);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
class HashMapMultiSetIterator implements Iterator<T> {
|
||||||
|
@Override
|
||||||
|
public boolean hasNext() {
|
||||||
|
return map.keySet().iterator().hasNext();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public T next() {
|
||||||
|
return map.keySet().iterator().next();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
package _6._1;
|
||||||
|
|
||||||
|
/* a) REGENWETTER
|
||||||
|
* Menge: {R,E,G,N,W,T}
|
||||||
|
* Multimenge: {(R,2),(E,4),(G,1),(N,1),(W,1),(T,2)}
|
||||||
|
*/
|
||||||
|
|
||||||
|
public interface MultiSet<T> extends Iterable<T>{
|
||||||
|
void add(T element);
|
||||||
|
|
||||||
|
int count(T element);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,4 @@
|
|||||||
|
A Menge alles Großbuchstaben
|
||||||
|
REGENWETTER
|
||||||
|
Menge: {R,R,E,E,E,G,N,W,T,T} oder {R,E,G,N,W,T}
|
||||||
|
Multimenge: {(R,2), (E,3), (G,1), (N,1), (W,1), (T,2)}
|
||||||
@ -0,0 +1,17 @@
|
|||||||
|
try {
|
||||||
|
// ...
|
||||||
|
} catch (GenericException <Integer > e) {
|
||||||
|
// ...
|
||||||
|
} catch (GenericException <Double > e) {
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
Das funktioniert nicht zur Laufzeit, da Aufgrund von Type Erasure
|
||||||
|
wir zwei gleiche catch hätten.
|
||||||
|
|
||||||
|
try {
|
||||||
|
throw new GenericException <Number >();
|
||||||
|
} catch (GenericException <Integer > e) {
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
Auch hier funktioniert das nicht zur Laufzeit aufgrund von Tyüpe Erasure.
|
||||||
Loading…
Reference in New Issue