Сохраните объект карты внутри другой карты

У меня есть, например, эта карта:

Map<String, Integer> map = new HashMap<String,Integer>();

чем я ставлю некоторые значения:

map.put("a", 2);
map.put("b", 3);

Чем у меня есть этот класс для сериализации этого объекта:

public class MapObject implements Serializable {

private static final long serialVersionUID = 1L;

Map<String, Integer> map = new HashMap<String, Integer>();

public MapObject(Map<String, Integer> map) {
    this.map = map;
}

}

Я делаю это, потому что работаю с сокетами и хочу передать объект карты от клиента к серверу, используя ObjectInputStream и ObjectOutputStream.

Теперь я хочу спросить, могу ли я сохранить этот объект карты на сервере, например

MapObject mo;

Можно ли сохранить этот объект на другой карте?

С Уважением


person thathashd    schedule 26.01.2012    source источник
comment
являются ли значения в вашей карте byte[] или Integer? Кроме того, если это Integer, то map.put(a,2) не будет работать, потому что 2 — это String, а не целое. Вы должны отредактировать свой вопрос, чтобы исправить все это :)   -  person TacticalCoder    schedule 27.01.2012
comment
Это не должно быть проблемой. Какую карту вы хотите хранить?   -  person Ted Hopp    schedule 27.01.2012
comment
HashMap уже реализует Serializable.   -  person Kal    schedule 27.01.2012
comment
извините, это целое число. Я хочу сохранить объект типа Map‹String,Integer› в другой карте Map‹String,Integer›. Для этого я хочу использовать, например, этот MapObject mo; .   -  person thathashd    schedule 27.01.2012
comment
Это должно работать, все храниться поля реализуют Serializable.   -  person Ortwin Angermeier    schedule 27.01.2012


Ответы (1)


Вы смешиваете два вопроса вместе. Не знаю, что вы спрашиваете:

  1. Можете ли вы передать иерархическую карту через ObjectOutputStream?
  2. Как привязать карту к карте?

Если вы задаете вопрос 2, вы не должны даже упоминать вопрос 1, потому что это запутывает вопрос. ИЛИ вы задаете оба вопроса?

Ответ на вопрос 2:

Map<String, Map<?,?>> mapOfMap = new HashMap<String, Map<?,?>>();

Map<String, Integer> mapA = new HashMap<String, Integer>();

mapOfMap.put("a", mapA);

Ответ на вопрос 1:

Конечно.

...

Чтобы ответить на ваши дополнительные вопросы:

Набор всех ключей и его итератор,

Set<String> keys = mapOfMap.keySet();
Iterator<String> iterator = keys.iterator();

Посмотрите на http://code.google.com/p/synthfuljava/source/browse/trunk/common/org/synthful/util/HashTreeNode.java,

чтобы увидеть пример того, что можно сделать с картой карт.

Этот хэш-узел дерева был написан (плохо) в 2004 году (и ему нужно удалить лишнее, например toStringBuffer), но он достаточно подходит для иллюстрации хеш-дерева с адресацией xpath. У меня есть другая версия для GWT с удаленным пухом где-то еще.

person Blessed Geek    schedule 26.01.2012
comment
Извиняюсь. Ты прав. Вопрос 1 Я это уже сделал. Я просто очень подробно объяснил, что я хочу. Благодарность - person thathashd; 27.01.2012
comment
Еще один вопрос. Как вы можете получить ключ и значение из mapA после вставки в mapOfMap? - person thathashd; 27.01.2012