Большинство механизмов базы данных должно поддерживать дамп Вашей базы данных в файл. Я знаю, что MySQL делает, так или иначе. Это просто будет текстовым файлом, таким образом, Вы могли утверждать, что к Подрывной деятельности, или независимо от того, что Вы используете. Было бы легко выполнить разность на файлах также.
Из-за дихотомии между примитивами и объектами в Java вы не можете использовать общий список List
для построения примитива массив как результат. Существуют примитивные коллекции, которые можно использовать, но в любом случае - используя список или работая над группами - вы копируете данные из временного хранилища в примитивный массив.
Так что любой из предложенных вами способов примерно так же хорош как друг друга. Если это зависит от производительности, профилируйте оба и выберите лучшее для вашего регулярного выражения.
Рискуя стать большим сутенером для библиотек Google guava (мне это очень нравится!), Класс Longs делает это однострочный:
return Longs.toArray(foundLongs);
та-даа!
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;
}
@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;
}
В этом случае нельзя использовать toArray. В ArrayLists хранятся только объекты, но не примитивы. Таким образом, вы не можете хранить int, long и т. Д. Вам придется либо сохранить все объекты как объекты Long, либо самостоятельно создать статический массив long.
Я думаю, вы также можете сделать что-то подобное.
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");