От arrayList до длинного []

Большинство механизмов базы данных должно поддерживать дамп Вашей базы данных в файл. Я знаю, что MySQL делает, так или иначе. Это просто будет текстовым файлом, таким образом, Вы могли утверждать, что к Подрывной деятельности, или независимо от того, что Вы используете. Было бы легко выполнить разность на файлах также.

6
задан Macarse 8 November 2009 в 14:59
поделиться

6 ответов

Из-за дихотомии между примитивами и объектами в Java вы не можете использовать общий список List .toArray (Long []) для построения примитива массив как результат. Существуют примитивные коллекции, которые можно использовать, но в любом случае - используя список или работая над группами - вы копируете данные из временного хранилища в примитивный массив.

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

5
ответ дан 8 December 2019 в 05:22
поделиться

Рискуя стать большим сутенером для библиотек Google guava (мне это очень нравится!), Класс Longs делает это однострочный:

return Longs.toArray(foundLongs);

та-даа!

13
ответ дан 8 December 2019 в 05:22
поделиться
public long[] parseString(String input) {

        final String[] parsed = input.split(",\\s?");
        final long[] values = new long[parsed.length];

        for (int i = 0; i < parsed.length; i++) {
            values[i] = Long.parseLong(parsed[i]);
        }

        return values;
}
3
ответ дан 8 December 2019 в 05:22
поделиться
@Test
public void testParsing() throws Exception {
    String input = "1,3,5,6,33";
    long[] parsed = parseString(input);
    assertEquals(5, parsed.length);
    assertEquals(1, parsed[0]);
    assertEquals(3, parsed[1]);
    assertEquals(5, parsed[2]);
    assertEquals(6, parsed[3]);
    assertEquals(33, parsed[4]);
}
public long[] parseString(String input) {
    String[] split = input.split(Pattern.quote(","));
    long[] arr = new long[split.length];
    for (int i = 0; i < arr.length; i++) {
        arr[i] = Long.parseLong(split[i]);
    }
    return arr;
}
2
ответ дан 8 December 2019 в 05:22
поделиться

В этом случае нельзя использовать toArray. В ArrayLists хранятся только объекты, но не примитивы. Таким образом, вы не можете хранить int, long и т. Д. Вам придется либо сохранить все объекты как объекты Long, либо самостоятельно создать статический массив long.

1
ответ дан 8 December 2019 в 05:22
поделиться

Я думаю, вы также можете сделать что-то подобное.

public long[] parseString(String input)
{
            //1. Split with comma separated
            int nLength = input.Split(new char[] { ',' }).Length;
            long[] arList = new long[nLength];

            for (int i = 0; i < nLength; i++)
            {
                arList[i] = long.Parse(input.Split(new char[] { ',' })[i].ToString());
            }

            return arList;
}

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

long[] l = parseString("10, 30, 40, 50");
-1
ответ дан 8 December 2019 в 05:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: