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

У меня есть этот массив 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
southpaw93 3 Ноя 2014 в 17:54

3 ответа

Лучший ответ

Исходный ответ был:

Если вам просто нужно получить доступ к каждому 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
RealSkeptic 3 Ноя 2014 в 16:35

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

HashMap<String, HashSet<Whatever>> map 
    = new HashMap<String, HashSet<Whatever>>();
2
Headshota 3 Ноя 2014 в 14:57

Либо используйте:

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, как вы хотите.

0
Kevin Cruijssen 3 Ноя 2014 в 15:20