Starsector API
Loading...
Searching...
No Matches
ListMap.java
Go to the documentation of this file.
1package com.fs.starfarer.api.util;
2
3import java.util.ArrayList;
4import java.util.LinkedHashMap;
5import java.util.List;
6
7public class ListMap<V> extends LinkedHashMap<String, List<V>> {
8 private static final long serialVersionUID = 1L;
9
10 public void add(String key, V value) {
11 if (value == null) return;
12 List<V> list = getList(key);
13 list.add(value);
14 }
15 public void remove(String key, V value) {
16 List<V> list = getList(key);
17 list.remove(value);
18 if (list.isEmpty()) {
19 remove(key);
20 }
21 }
22
23 @Override
24 public List<V> get(Object key) {
25 return getList((String) key);
26 }
27 public List<V> getList(String key) {
28 List<V> list = super.get(key);
29 if (list == null) {
30 list = new ArrayList<V>();
31 put(key, list);
32 }
33 return list;
34 }
35
36 public void cleanupEmptyLists() {
37 for (String id : new ArrayList<>(keySet())) {
38 if (containsKey(id) && getList(id).isEmpty()) {
39 remove(id);
40 }
41 }
42 }
43}
List< V > getList(String key)
Definition ListMap.java:27
void add(String key, V value)
Definition ListMap.java:10