Как конвертировать список < Integer > int [] в Java? [Дубликат]

Да, это легко и понятно. Определите первые цвета по умолчанию.

Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.White;
Console.Clear();

Console.Clear() важно установить новые цвета консоли. Если вы не сделаете этот шаг, вы можете увидеть комбинированные цвета, когда задаете значения с помощью Console.ReadLine().

Затем вы можете изменять цвета при каждой печати:

Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Red text over black.");

Когда завершите свою программу, помните, как сбросить цвета консоли на финише:

Console.ResetColor();
Console.Clear();

Теперь с netcore возникает другая проблема, если вы хотите «сохранить» пользовательский интерфейс, потому что терминал имеет разные цвета для каждой оперативной системы.

Я создаю библиотеку, которая решает эту проблему с помощью текстового формата: цвета, выравнивание и многое другое. Вы можете использовать и вносить свой вклад.

https://github.com/equiman/colorify/

Цвета для Windows (темный):

Цвета для MacOS (Light):

526
задан Community 23 May 2017 в 12:10
поделиться

6 ответов

Unfortunately, I don't believe there really is a better way of doing this due to the nature of Java's handling of primitive types, boxing, arrays and generics. In particular:

  • List.toArray won't work because there's no conversion from Integer to int
  • You can't use int as a type argument for generics, so it would have to be an int-specific method (or one which used reflection to do nasty trickery).

I believe there are libraries which have autogenerated versions of this kind of method for all the primitive types (i.e. there's a template which is copied for each type). It's ugly, but that's the way it is I'm afraid :(

Even though the Arrays class came out before generics arrived in Java, it would still have to include all the horrible overloads if it were introduced today (assuming you want to use primitive arrays).

207
ответ дан 22 November 2019 в 22:20
поделиться

Самый простой способ сделать это - использовать Apache Commons Lang . У него есть удобный класс ArrayUtils, который может делать то, что вы хотите. Используйте метод toPrimitive с перегрузкой для массива Integer s.

List<Integer> myList;
 ... assign and fill the list
int[] intArray = ArrayUtils.toPrimitive(myList.toArray(new Integer[myList.size()]));

Таким образом, вы не изобретаете колесо. В Commons Lang есть очень много полезных вещей, которые Java упустила. Выше я решил создать целочисленный список нужного размера. Вы также можете использовать статический целочисленный массив нулевой длины и позволить Java выделить массив правильного размера:

static final Integer[] NO_INTS = new Integer[0];
   ....
int[] intArray2 = ArrayUtils.toPrimitive(myList.toArray(NO_INTS));
170
ответ дан 22 November 2019 в 22:20
поделиться

Чтобы просто найти привязки клавиш для команды, вы можете использовать функцию emacs help "where-is"

C-h w command-name

Если для команды установлено несколько привязок, все они будут перечислены.

Для обратного, учитывая последовательность клавиш, вы можете ввести

C-h k key-sequence

, чтобы получить команду, которая будет запущена.

Вы можете получить подробную информацию о команде, а также о любой определенной неинтерактивной функции, набрав

C-h f function-name

, который предоставит вам подробную информацию о функции, включая любые привязки клавиш для нее, а

C-h v variable-name

предоставит вам информацию о любой (связанной) переменной. Карты клавиш хранятся в переменных, однако коды клавиш хранятся в необработанном формате. В качестве примера попробуйте Ch v isearch-mode-map .

Для получения дополнительной помощи,

51
ответ дан 22 November 2019 в 22:20
поделиться

На самом деле нет способа "объединить в одну строку" то, что вы пытаетесь сделать, потому что toArray возвращает Object [], и вы не можете преобразовать Object [] в int [] или Integer [] в int []

5
ответ дан 22 November 2019 в 22:20
поделиться

попробуйте также Dollar (проверьте эту ревизию):

import static com.humaorie.dollar.Dollar.*
...

List<Integer> source = ...;
int[] ints = $(source).convert().toIntArray();
3
ответ дан 22 November 2019 в 22:20
поделиться

В дополнение к Commons Lang, вы можете сделать это с помощью метода Guava Ints.toArray(Collection collection):

List<Integer> list = ...
int[] ints = Ints.toArray(list);

Это избавит вас от необходимости самостоятельно выполнять промежуточное преобразование массива, которое требуется в эквиваленте Commons Lang.

195
ответ дан 22 November 2019 в 22:20
поделиться
Другие вопросы по тегам:

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