是否有数据结构来执行以下操作:

时间:2012-11-25 11:48:05

标签: java list data-structures

当我输入某个数据项(此处为字符)时,我可以访问与之相关的元素,如:

当我输入'A'时,它可以访问值(2, 3, 4, 5),例如:

A - 2,3,4,5   
B - 6,7,9  
C - 10, 11, 12, 13  
D - 1,8
and so on...

此外,ABCD可以是任何数据项,int甚至是字符串。

我在想的是,我可以保持线性数组,然后数组中的每个项目都是链表的标题。这是否是上述所需数据结构的正确和最佳解决方案?我们已经有了一些数据结构吗?

2 个答案:

答案 0 :(得分:1)

最佳解决方案是在表值中使用带有数组(或列表)的Hash Table

这是Java中使用HashMap的一个例子

Map<String,Integer[]> theMap;
theMap = new HashMap<String,Integer[]>();
theMap.put("A",{2,3,4,5});
theMap.put("B",{6,7,9});
theMap.put("C",{10,11,12,13});
theMap.put("D",{1,8});

/* Access Values */
int two = theMap.get("A")[0];

您也可以使用ArrayList代替数组作为整数。

代码如下:

ArrayList<Integer> listA = new ArrayList<Integer>();
    listA.add(2);
    listA.add(3);
    listA.add(4);
    listA.add(4);

ArrayList<Integer> listB = new ArrayList<String>();
    listB.add(6);
    listB.add(7);
    listB.add(9);

ArrayList<Integer> listC = new ArrayList<Integer>();
    listC.add(10);
    listC.add(11);
    listC.add(12);
    listC.add(13);

ArrayList<Integer> listD = new ArrayList<Integer>();
    listD.add(1);
    listD.add(18);

    Map<String,List<Integer>> theMap;
    theMap = new HashMap<String,List<Integer>>();
    theMap.put("A",listA);
    theMap.put("B",listB);
    theMap.put("C",listC);
    theMap.put("D",listD);

    /* Access Values */
    int two = theMap.get("A").get(0);

答案 1 :(得分:0)

使用简单的dictionary/map/associative array,其元素是列表(或集)。在Python中,collections.defaultdict可以在这里提供帮助:

import collections
d = collections.defaultdict(list)
A,B,C,D = ['A', 8, 3.0, (1,2)]
d[A].extend([2, 3, 4])
d[A].append(5)
# d[A] is now [2,3,4,5]