存储Integer和array [String]值的好数据结构是什么?

时间:2012-02-25 21:08:50

标签: java arrays data-structures

我需要一个数据结构来存储与 变量 大小的字符串数组相关联的多个整数值。例如,这就是我所拥有的 -

ADDRESS   INSTRUCTION
64        ADD R1, R0, R0 
68        BGTZ R2, #32
.         .
.         .
.         .
124       J #116

我想要获取 INSTRUCTION ,我认为应该根据 ADDRESS 值将其存储为字符串数组(不包括逗号和'#'),更像是一个键值对。这是我认为存储它应该是一个好主意或者如果你可以建议我在内存中表示这个更好的方法它会很棒。 (我使用Java编写代码。)

一个良好的数据结构( WHICH ?)有推理(为什么?)和详细解释( HOW ?)会非常好。

5 个答案:

答案 0 :(得分:5)

<强> WHICH吗

Map<Integer, List<String>>

<强> WHY吗

  • 工作
  • 它在JDK中
  • 已经被我们周围的数百万人使用

如何吗

Map<Integer, List<String>> map = new HashMap<>();
map.put(64, new ArrayList<String>());
map.get(64).addAll("ADD", "R1", "R0", "R0");

<强> PROFIT!

答案 1 :(得分:2)

  • WHICH - 使用Map界面
  • 为什么 - 将数据隐式组织为键值对
  • 如何 - 使用实现Map界面的类(例如HashMap

答案 2 :(得分:2)

地图Map<Integer, List<String>>;这是自然形式。

答案 3 :(得分:2)

虽然我同意地图可行,但我认为它在语义层面上并不是一个干净的匹配。相反,我会选择一个具有List(或数组)命令和目标地址的自定义Object:

public class InstructionSet{
private int address;
private String[] commands;
// getters, setters
}

然后我会分配这些自定义对象的列表。

但如果您确实想要使用地图,我会使用Guava Multimap

答案 4 :(得分:1)

之前的答案给出了哪个以及一些为什么。对于如何,请参阅http://docs.oracle.com/javase/tutorial/collections/interfaces/map.html