java - 公式解决方案

标签 java netbeans structure multimap file-io

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

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/

相关文章:

java - 构建时未找到 Maven 子模块

java - 如何每秒刷新一次 View 以实时反射(reflect)变化?

netbeans - 源目录已经是 NetBeans 项目错误

成功清理和构建后 JavaCV 无法运行

C - fscanf 错误与 char *

visual-studio-code - 项目结构到图形布局(VSCode)?

c++ - 尝试访问结构中的 map 时程序卡住

java - PowerMockito final方法调用验证不起作用

java - 了解Android中的R类

java微优化: combine set of boolean instance variables to bit vector based on int