2013-11-28 3 views
2

У меня есть строка, refid = "asdkjdndkdkkd", а другая refid = "jsdjnfrejnfkn". Как я могу использовать refid как часть имени списка?Дайте имя списку, используя строковое содержимое

Например, что-то вроде:

list<String> list_+refid 
+0

Вы хотите динамически генерировать ссылочное имя ??? – TheLostMind

+0

@ TheLostMind похоже. Это хороший вопрос - не знаю, почему кто-то мог бы понизить/закрыть голосование. Он мог бы сделать это, используя отражение, но я не уверен, что знаю ответ на этот вопрос. – alfasin

+0

okey просто я не получаю вашу настоящую проблему. Можете ли вы просто рассказать мне больше о том, чего вы хотите, пожалуйста, чтобы мы могли помочь u /. :) – Krishna

ответ

3

Единственный способ добиться этого путем написания кода, который излучает новый байткод во время выполнения, или другие metaprogramming подходы, как объяснено в this thread.

Если у вас есть очень веские причины, чтобы сделать это, вы можете придерживаться HashMap (или другой карты):

HashMap<String, List<String>> map = new HashMap<String, List<String>>(); 

// ... 

List<String> list; 
if (map.containsKey(refId)) 
    list = map.get(refId); 
else 
    map.put(refid, list = new ArrayList<String>()); 

// work with list here 
+0

Он хочет назвать ссылку динамически на основе идентификатора ссылки ... Ваш код этого не делает. – TheLostMind

+0

Я отредактировал его, чтобы объяснить, почему я рекомендую HashMap. – Domi

+0

@LostMind да, я хочу дать имена динамически. – user2981726

-1

Можно получить доступ к определенной области с помощью string concatenation and reflection, но не создать его. Однако у вас обычно есть несколько полей, которые вы хотите создать таким образом, поэтому сопоставление map из строки в список похоже на то, что вы будете использовать здесь. Пример:

Map<String,List<String>> map = new HashMap<>(); 
map.put(refid, new ArrayList()); 
map.get(refid) 
+0

Я уже использую карту для этого, но проблема с этим решением заключается в том, что содержимое ключа arraylist при изменении, т.е. у меня есть 1000 refid, которые я взяв в качестве ключей на моей карте, а соответствующие значения - список массивов. Мне нужно закодировать содержимое файла и обновить содержимое списка массивов с каждой итерацией, поэтому я должен дать им имена, чтобы я мог получить к ним доступ в следующих итерациях – user2981726

+0

Вы можете получить доступ к любым значениям на карте в будущих итерациях, попробуйте сделать map.get (refid), который вернет список, который может использоваться точно так же, как 'list_ + refid' или любой другой список. Здесь может быть полезен некоторый фактический пример кода. – user60561

+0

Почему вы были остановлены?: -/ – Boann

Смежные вопросы