Получение разных имен переменных одной строкой кода - PullRequest
0 голосов
/ 27 марта 2019

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

Строка с надписью p+(a+1).add(a) - это то, на что я обращаю особое внимание

public void arraylistvariables()
{
    ArrayList<String> p1 = new ArrayList<String>();
    ArrayList<String> p2 = new ArrayList<String>();

    int d = 0;
    for (int a = 0; a < 2; a++)
    {
        p+(a+1).add(a);
    }
}

Я чувствую, что он должен захватывать каждый отдельный ArrayList, но он возвращает сообщение об ошибке, которое говорит "не утверждение"

Ответы [ 3 ]

0 голосов
/ 27 марта 2019

То, что вы спрашиваете, невозможно в статически типизированном языке, таком как Java. a является переменной, поэтому компилятор не может утверждать, что определенно существует переменная с именем p{a}.

То, что вы ищете, больше соответствует поведению динамического языка, хотя даже некоторые из них могут не позволить вам сделать это.

В Java идиоматический способ сделать что-то вроде этого, вероятно, будет иметь список списков. Сначала получите список строк, а затем добавьте к этому. Мы обойдемся без p1 и p2, теперь они просто элементы списка списков.

public void arraylistvariables()
{
    List<List<String>> allTheLists = Arrays.asList(
        new ArrayList<>(),
        new ArrayList<>()
    );

    int d = 0;
    for (int a = 0; a < allTheLists.size(); a++)
    {
        allTheLists.get(a).add(Integer.toString(a));
    }
}
0 голосов
/ 27 марта 2019

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

Однако вот возможное решение:

    ArrayList<String> p1 = new ArrayList<String>();
    ArrayList<String> p2 = new ArrayList<String>();
    ArrayList<ArrayList<String>> p = new ArrayList<>();
    p.add(p1);
    p.add(p2);

    for (int a = 0; a < 2; a++)
    {
        p.get(a).add(""+a);
    }
0 голосов
/ 27 марта 2019

Java не поддерживает динамическое получение имени переменной. Используйте List или Array для хранения экземпляров, которые вы хотите использовать.

...