如何在键是对象时访问哈希映射键

时间:2013-08-01 01:14:23

标签: java arraylist hashmap

我似乎无法弄清楚如何访问我的hashmap的值

我基本上要做的是创建一个带有数组的hashmap作为json样式之类的值之一..如果这有意义吗?

所以我想要像hash{key: value1, value2, value3, [number1,number2]}

这样的东西

并且能够像(伪代码:) hash.get(3).get(1)

那样访问它
public class WebSearch {

readFile.ReadFile xfile = new readFile.ReadFile("inputgraph.txt");
HashMap webSearchHash = new HashMap();
ArrayList belongsTo = new ArrayList();
ArrayList keyphrase = new ArrayList();


public WebSearch() {




}


public void createGraph()
{
    HashMap <Object, ArrayList<Integer> > outlinks = new HashMap <Object, ArrayList<Integer>>();
    for (int i = 0; i < xfile.getNumberOfWebpages(); i++ )
    {
        keyphrase.add(i,xfile.getKeyPhrases(i));
        outlinks.put(keyphrase.get(i), xfile.getOutLinks(i));

    }

}

keyphrasesArrayList

这是System.out.print(outlinks);

的输出

{[education, news, internet]=[0, 3], [power, news]=[1, 4], [computer, internet, device, ipod]=[2], [university, education]=[5]}

我如何才能说出这句话:[education, news, internet]=[0, 3]

我试过了:

outlinks.get(xfile.getKeyPhrases(i))

例如,

xfile.getKeyPhrases(0)会返回[education, news, internet]

4 个答案:

答案 0 :(得分:1)

您可以先获取地图的键集(Map.keySet()); outlinks.keySet()

然后,您可以在地图上使用这些键来获取您的输入(键值)

答案 1 :(得分:0)

您尚未发布足够的周围代码以完全清楚您的问题,但请查看the Javadocs for Map。迭代outlinks.values()可能会得到你想要的东西。

答案 2 :(得分:0)

我建议使用自定义对象并在集合中使用它。

您可以创建一个POJO / Bean类,并使用您想要的详细信息覆盖toString方法,例如迭代数组中的项目。 当您使用它来打印或显示时,将调用toString方法。

以下链接向您展示了一些想法:

http://www.javapractices.com/topic/TopicAction.do?Id=55

http://en.wikipedia.org/wiki/Plain_Old_Java_Object

答案 3 :(得分:0)

您可以使用Map.keySet()方法访问任何HashMap的键。

另请注意,java.util.HashMap是无序的。 HashMap不保证地图的顺序;特别是,它不保证订单会随着时间的推移保持不变。

您希望重新查看HashMap的结构,并将ArrayList作为密钥。