blob: e5113d946c949db9c4594cfc53199075f983e293 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
package org.zwobble.hobgoblin.compiler.util;
import java.util.*;
public class ManyToMany<TLeft, TRight> {
private final Map<TLeft, List<TRight>> leftToRight = new HashMap<>();
private final Map<TRight, List<TLeft>> rightToLeft = new HashMap<>();
public ManyToMany() {}
public List<TRight> leftToRight(TLeft left) {
var rights = this.leftToRight.get(left);
if (rights == null) {
return List.of();
} else {
return Collections.unmodifiableList(rights);
}
}
public List<TLeft> rightToLeft(TRight right) {
var lefts = this.rightToLeft.get(right);
if (lefts == null) {
return List.of();
} else {
return Collections.unmodifiableList(lefts);
}
}
public void add(TLeft left, TRight right) {
this.leftToRight.putIfAbsent(left, new ArrayList<>());
this.leftToRight.get(left).add(right);
this.rightToLeft.putIfAbsent(right, new ArrayList<>());
this.rightToLeft.get(right).add(left);
}
}
|