我有3个数据集,比如A B和C. A包含5个元素的单个数组。 B包含2D数组,C也包含2D数组。 A包含5个独立于B和C的元素。 对于A中的每个元素,数组在B中关联,对于该B数组中的每个元素,数组在C中关联。所以我想将这些数据集存储在数据结构中,以便在A中选择一个元素在B中给出适当的元素数组,并选择B数组中的元素应该给出C的元素..任何人都可以建议我...我正在使用java编程语言来实现这个数据结构..
答案 0 :(得分:1)
如果我理解正确,你正在寻找从A的元素到B的元素以及从C到C的元素的映射。实现这个的最简单方法是使用一些HashMaps
或其他任何实现Map
接口的类,例如:
List<TypeA> a = new ArrayList<TypeA>();
Map<TypeA, List<TypeB>> b = new HashMap<TypeA, List<TypeB>>();
Map<TypeB, List<TypeC>> c = new HashMap<TypeB, List<TypeC>>();
这样,a
只是您的数组 A 。 b
将元素从a
映射到列表,列表是2D数组 B 中的行。同样,c
将这些行中的元素映射到列表,列表是 C 中的行。
或者,您可以对所有三个使用单个嵌套Map
:
Map<TypeA, Map<TypeB, List<TypeC>>> abc =
new HashMap<TypeA, Map<TypeB, List<TypeC>>>;
这样,abc
中的键对应于您的数组 A 。每个键的值也是一个映射,其键是 B 中与 A 中的元素对应的行的元素。最后,每个键的值是 C 中与 B 中的元素对应的行。
请注意,Map
中的键没有排序,因此如果订单很重要(例如,如果您必须以任何特定顺序迭代 A ,或者您必须通过某些索引访问它们)你应该使用第一个解决方案。如果订单对b
和c
也很重要,您可以尝试这样做:
List<TypeA> a = new ArrayList<TypeA>();
List<List<TypeB>> b = new ArrayList<List<TypeB>>();
List<List<TypeC>> c = new ArrayList<List<TypeC>>();
Map<TypeA, Integer> ab = new HashMap<TypeA, Integer>();
Map<TypeB, Integer> bc = new HashMap<TypeB, Integer>();
此处,a
,b
和c
直接对应您的 A , B 和 C (如果您知道他们将拥有多少元素,您也可以使用数组)。然后ab
和bc
保存a
(或b
)的每个元素到b
(或c
)中相应索引的映射。请注意,每当您将元素插入ab
或bc
时,您都必须更新a
和b
。
因此,如果订单不重要,我会推荐第二个解决方案,因为这样您就不必“同步”a
,b
和{{ 1}}。
答案 1 :(得分:0)
// <Value, index in A>
vector<pair<Value, int>> A;
// <Value, index in C>
vector<vector<pair<Value, int>> B;
// Values in C
vector<vector<Value>> C;
如果我对你的问题的理解是正确的,那么在C ++中我会做到以上几点,不确定Java。