2个哈希表键

时间:2011-04-30 17:47:16

标签: java collections arraylist hashtable

我有2条记录是标题。

示例
记录1:我的标题
记录2:我的另一个标题

我需要使用Hashtable将它们存储到ArrayList中。

这就是我的工作。

package com.Testing;

import java.util.Hashtable;
import java.util.ArrayList;
import java.util.Dictionary;



public class AnotherClass {
    private Hashtable <String, String> items = new Hashtable <String, String>();
    private ArrayList <Hashtable <String, String>> finalArray = new ArrayList <Hashtable <String, String>>();

    public ArrayList <Hashtable <String, String>> returnArray() {
        return finalArray;
    }

    public void adding() {
            this.items.put("Record", "Record 1");
        this.items.put("Format", "My Title");
        this.finalArray.add(items);

            this.items.put("Record", "Record 2");
        this.items.put("Format", "My ANOTHER Title");
        this.finalArray.add(items);
    }
}

当我通过遍历arraylist打印我的项目结果时,它只显示第二条记录。

任何建议让它显示两个记录?

谢谢!

3 个答案:

答案 0 :(得分:4)

在创建第一个和第二个记录之间,输入:

this.items = new Hashtable <String, String>();

问题在于您正在为两个记录重复使用相同的哈希表。

此外,您最近应该使用HashMap而不是Hashtable,并且应该使用最广泛的有用类型(这里的意思是List而不是ArrayList)和Map而不是Hashtable或HashMap来声明变量。没有必要在变量的类型中描述实现类;这是一个你在使用变量时不需要知道的细节,所以它只是杂乱无章。

答案 1 :(得分:2)

您将同一哈希表的引用放入finalArray两次。更改哈希表时,您会看到更改会影响finalArray的两个元素。

答案 2 :(得分:0)

您为两个记录插入了相同的Hashtable。当您插入第二条记录时,您将覆盖第一条记录的值,因此您将获得第二条记录。