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

Java 是否有执行以下操作的数据结构:,java,list,data-structures,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... 而且A、B、C、D可以是任何数据项、int甚至是字符串 我想的是,我可以保持一个线性数组,然后数组中的每个项目都是链表的标题。这是上述数据结构所需的正确和最佳解决方案吗?我们已经有了一些数据结构来完成这项工作吗?使用一个简单的,其元素

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

当我输入“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...
而且
A
B
C
D
可以是任何数据项、
int
甚至是字符串

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

使用一个简单的,其元素是列表(或集合)。在Python中,a可以在以下方面提供帮助:

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]

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

下面是一个使用HashMap的Java示例

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];

你的问题是针对特定语言的吗?如果是这样,精确的。它需要维护秩序吗?@ Julien Bourdon -C++,Java@tjameson-是的,顺序很重要。在我的回答中添加了一个Java示例。谢谢Julien Bourdon,这真的很有帮助。我在这一行中得到一个错误:“nota statement”:theMap.put(“a”,{2,3,4,5});还有类似的线路。。我尝试了以下方法:整数[]数字={2,3,4,5};字符串key=“A”;地图放置(键、数字);一切顺利。这两段代码有区别吗?我使用的是Jdk1.7,我还没有测试代码,但实际上,您可能无法直接在方法中指定数组。无论如何,我建议您使用列表而不是数组,因为它们更易于使用,更接近OO理念。@KaranSharma用列表修改了答案。
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);