下面是我正在处理的输入示例:
以String,Double作为参数的linkedHashMap
NumericMap: { p=20.0, r=5.0, i=2.0}
和文件输入:
p = i * i * r
我现在需要做的是获取文件输入并将其作为数据结构存储在程序中,该数据结构允许重复并根据插入维护文件中项目的顺序。从那里我需要能够以相关顺序将 double 应用到文件输入中,结果是:
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 中来实现所有这些,但 linkedHashMap 不允许重复条目。有人建议我使用 multiMap,如下所示:
Multimap map = ArrayListMultimap.create();
map.put(key, value1);
map.put(key, value2);
List values = map.get(key);
但不幸的是这只会返回错误。我也尝试过使用 arrayLists 来做到这一点,但显然 arrayLists 一旦调整就不会保持顺序。
关于我可以使用什么来进行文件输入以获得上述所有内容以及我应该如何去做的任何想法。
问候
最佳答案
您可以编写自己的多个 map 类。这是其中一种实现:
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);
}
}
关于java - 公式解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14465520/