以下是我正在处理的输入示例:
带有字符串,双作为参数
的linkedHashMapNumericMap: { p=20.0, r=5.0, i=2.0}
并输入文件:
p = i * i * r
我现在需要做的是获取文件输入并将其作为数据结构存储在程序中,该数据结构允许重复并根据插入维护文件中项目的顺序。从那里我需要能够将相关顺序中的双精度应用到文件输入中,从而产生:
20 = 2 * 2 * 5
从这里我需要说:
If(the file input structure .contains("*"){
Double1 = the double in front of the *
Double2 = the double after the *
Answer1 = Double1 * Double2
}
到目前为止,我已经设法通过将文件输入放入linkedHashMap来实现所有这一切,但linkedHashMaps不允许重复输入。有人建议我使用像这样的multiMap:
Multimap map = ArrayListMultimap.create();
map.put(key, value1);
map.put(key, value2);
List values = map.get(key);
但不幸的是,这只会返回错误。我也试图用arrayLists做这个,但很明显,一旦调整,arrayLists就不会保持顺序。
关于我可以用于文件输入的任何想法,以获得上述所有内容以及我应该如何进行。
此致
答案 0 :(得分:1)
您可以编写自己的多个地图类。以下是其中一个实现:
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
public class MultiMap<K, V> {
Map<K, List<V>> map = new HashMap<K, List<V>>();
public void put(K key, V value) {
List<V> values = null;
if(!map.containsKey(key)) {
values = new LinkedList<V>();
map.put(key, values);
} else {
values = map.get(key);
}
assert(values != null);
values.add(value);
}
public List<V> get(K key) {
return map.get(key);
}
}