Джобу, я бы поступил именно так, как вы предложили. В некотором смысле вы уже ответили на свой вопрос. :) Всякий раз, когда у меня была похожая ситуация, и мне приходилось использовать карту, я использую косую черту для формирования иерархии объектов. Итак, скажем, вы хотите различать данные, которые поступают из 30 источников, как вы говорите. - Дайте этим источникам уникальное имя и сформируйте ключи карты, используя простой шаблон: "/<root>/<source id>/<data id>
". Пример хранения ссылки на каком-либо сайте: mymap.put("/myproject/www.example.com/link-0121", "http://www.kernel.org");
Если по какой-то причине вы хотите получить все записи на карте с ключами, равными "/myproject/www.example.com
", то я предлагаю вам перечислять объекты только на вашу карту! Вот псевдокод для этого случая:
ArrayList lst = new ArrayList();
lst.add("http://www.kernel.org");
mymap.put("/myproject/www.example.com", lst); // www.example.com has a link to www.kernel.org
Этот подход работает, только если ваши данные могут быть однозначно идентифицированы по номеру. Затем вы просто используете метод List () get, который имеет индекс в качестве параметра.
Однако, если вам нужны строковые ключи для данных, я боюсь, что вам нужно создать Map of Maps (т.е. использовать HashMap вместо ArrayList).