2017-02-13 5 views
-2

Я пытаюсь передать входные данные в программу java с помощью аргумента командной строки ArrayList из BigIntegers.Можете ли вы передать ArrayList в качестве аргумента командной строки для java-программы

Я понимаю, называя программу как таковую:

java myProgram one two 

args[0] = "one" 
args[1] = "two" 

Но если я должен был запустить программу как таковую

java myProgram arrayList 

Как бы преобразовать String[] представление этого Arraylist обратно в ArrayList<BigInteger>

arrayList будет возвращен из отдельного java-файла, который возвращает массивList BigInetegr, могу ли я использовать этот jav программа в качестве вклада в эту?

Я немного смущен, так как я бы пошел об этом.

Спасибо!

+1

Аргументы командной строки - это строки. Следовательно, 'String []'. Просто проанализируйте их. Я полагаю, вы могли бы выгрузить сериализованный «ArrayList » в файл, а затем передать его в STDIN? Однако не вижу в этом большой причины. –

+0

Вы хотите, чтобы '' один ''стал' 1'? Или вы собираетесь передавать фактические десятичные строки в свою программу, т. Е. «123»? – weston

ответ

1

Пока вы передаете фактические десятичные строки в вашу программу, например. java myProgram 123 456.

List<BigInteger> bigInts = new ArrayList<>(args.length); 
for(int i = 0; i < args.length; i++) 
    bigInts.add(new BigInteger(args[i])); 

Или с помощью Java 8 потоков:

List<BigInteger> bigInts = Arrays.stream(args) 
          .map(BigInteger::new) 
          .collect(Collectors.toList()); 

Но если вы передаете слова к вашей программе, то две вещи, вы будете нуждаться в пользовательской функции для анализа английских слов BigInteger, плюс I сомнение, что кто-то будет печатать целое достаточно большое, потребует BigInteger.

+0

Возможно, стоит использовать 'Collectors.toCollection (ArrayList :: new)', если OP специально хочет 'ArrayList'. Кроме того, 'три миллиарда' слишком велик, чтобы вписаться в' int' - слова могут быть довольно краткими. В любом случае, +1 –

+0

@BoristheSpider Правда, но я не упоминал 'int' и' three billion' fits в 'long'! – weston

+0

Мех, максимальное значение для 'long' составляет всего девять и четверть квинтиллиона или около того. (США «короткая шкала») –

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