我有 3 个数据集,比如 AB 和 C。A 包含 5 个元素的单个数组。B 包含一个二维数组,C 也包含一个二维数组。A包含5个独立于B和C的元素。对于A中的每个元素,在B中关联一个数组,对于B的该数组中的每个元素,在C中关联一个数组..所以我想存储这些数据集在数据结构中,以便在 A 中选择一个元素应该在 B 中给出适当的元素数组,并在 B 的该数组中选择一个元素应该给出 C 的元素 .. 任何人都可以建议我一个..我正在使用 java 编程语言来实现这个数据结构..
问问题
837 次
2 回答
1
如果我理解正确,您正在寻找从 A 的元素到 B 的元素以及从那些到 C 的映射。实现这一点的最简单方法是使用 someHashMaps
或任何其他实现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
到列表,这是二维数组B中的行。同样,c
将这些行中的元素映射到列表,即C中的行。
Map
或者,您可以对所有三个使用单个嵌套:
Map<TypeA, Map<TypeB, List<TypeC>>> abc =
new HashMap<TypeA, Map<TypeB, List<TypeC>>>;
这样,中的键abc
对应于您的数组A。每个键的值也是一个映射,其键是B中与A中的那个元素相对应的行的元素。最后,每个键的值是C中与B中的元素相对应的行。
请注意, aMap
中的键没有排序,因此如果顺序很重要(例如,如果您必须以任何特定顺序迭代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
保存从 (or ) 的每个元素到( a
or b
) 中相应索引的映射。请注意,每当您将元素插入or时,您都必须更新和。b
c
ab
bc
a
b
因此,如果顺序不重要,我会推荐第二种解决方案,因为这样您就不必 'synchronize'a
和.b
c
于 2012-09-29T19:22:26.350 回答
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。
于 2012-09-28T07:34:57.970 回答