2 Hashtable ключи - PullRequest
       22

2 Hashtable ключи

0 голосов
/ 30 апреля 2011

У меня есть 2 записи, которые являются заголовком.

Пример
Запись 1: Мой заголовок
Запись 2: Мой другой заголовок

Мне нужно сохранить их в ArrayList с помощью Hashtable.

Это то, что я делаю.

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);
    }
}

Когда я делаю распечатку своего результата предметов, перебирая массив, он показывает только 2-ую запись.совет, чтобы показать обе записи?

спасибо!

Ответы [ 3 ]

4 голосов
/ 30 апреля 2011

Между созданием первой и второй записей введите:

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

Проблема в том, что вы повторно используете одну и ту же хеш-таблицу для обеих записей.

Кроме того, вам следуетиспользуйте HashMap вместо Hashtable в наши дни, и вы должны объявить переменные с самым широким полезным типом, который здесь означает List, а не ArrayList, и Map, а не Hashtable или HashMap.Нет необходимости описывать класс реализации в типе переменной;это деталь, которую вам не нужно знать при использовании переменной, так что это просто беспорядок.

2 голосов
/ 30 апреля 2011

Вы помещаете ссылку на одну и ту же хеш-таблицу в finalArray дважды. Когда вы измените хеш-таблицу, вы увидите, что изменения влияют на оба элемента finalArray.

0 голосов
/ 30 апреля 2011

Вы вставляете один и тот же Hashtable для обеих записей. Когда вы вставляете вторую запись, вы переопределяете значения для первой, так что вы получаете вторую дважды ...

...