配方解决方案

时间:2013-01-22 18:28:52

标签: java netbeans structure multimap file-io

以下是我正在处理的输入示例:

带有字符串,双作为参数

的linkedHashMap
NumericMap: { 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就不会保持顺序。

关于我可以用于文件输入的任何想法,以获得上述所有内容以及我应该如何进行。

此致

1 个答案:

答案 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);
    }
}