2014-11-03 3 views
-1

Я новичок в Java, и я буквально понятия не имею, как это сделать.Значения массива Java как hashset

У меня есть этот массив Java:

String luni[]; 
luni = new String[] {"A","B","C"}; 

и я хочу каждое значение A, B, C из массива, чтобы стать HashSet переменной, например:

Set<String> luni[0] = new HashSet<>(500); 
Set<String> luni[1] = new HashSet<>(500); 
Set<String> luni[2] = new HashSet<>(500); 

В конце концов, имея A, B, C как HashSet, к которому я могу в дальнейшем использовать luni[0].add("string"); Надеюсь, вы получите идея. Как я могу это сделать, похоже, что это не сработает, как я написал?

+1

имя переменной не может быть ** динамическим ** в JAVA. Невозможно в Java – Braj

+1

так, есть ли обходной путь? – southpaw93

+3

Лучше использовать 'Map >' to содержит пары ключ-значение, где 'A',' B' и 'C' являются ключами – Braj

ответ

1

Оригинальный ответ был:

Если вам просто нужно получить доступ к каждому HashSet в массиве по индексу, luni[0].add("string"), то вам просто нужно определить luni как массив множеств:

Но на самом деле вам нужно использовать ArrayList of Sets (или использовать массив raw Set, но это не так хорошо), и вы все равно сможете использовать его с индексом:

Обратите внимание, что это полезно только в том случае, если у вас нет фактического использования для «A», «B», «C», и вы просто хотите получить доступ к хешетам по индексу.

List<Set<String>> luni = new ArrayList<Set<String>>(); 

    luni.add( new HashSet<String>(500)); 
    luni.add( new HashSet<String>(500)); 
    luni.add( new HashSet<String>(500)); 

    luni.get(0).add("String"); 
+1

это не скомпилируется, 'Set [] luni = new Устанавливает [3];' имеет ошибки, говорящие о создании общего массива. – southpaw93

+0

Хорошо, я пересмотрел ответ. Используйте ArrayList вместо массива. Вы все равно можете получить элементы по индексу. – RealSkeptic

2

Вы можете использовать HashMap в своем случае, у него будут ключи String и HashSet.

HashMap<String, HashSet<Whatever>> map 
    = new HashMap<String, HashSet<Whatever>>(); 
0

Либо использование:

Map<String, Set<String>> luni = new HashMap<>(); 
luni.put("A", new HashSet<String>(500)); 
luni.put("B", new HashSet<String>(500)); 
luni.put("C", new HashSet<String>(500)); 
// To add a value to B: 
luni.get("B").add("some string"); 

или:

List<Set<String>> luni = new ArrayList<>(3); 
luni.add(new HashSet<String>(500)); 
luni.add(new HashSet<String>(500)); 
luni.add(new HashSet<String>(500)); 
// To add a value to 'B' (index 1): 
luni.get(1).add("some string"); 

я предлагаю использовать первый. Второй использует индекс вместо A, B и C, как вы хотите.

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