Как преобразовать ArrayList, содержащий Целые числа к примитивному международному массиву?

AnyNumber=['14','22','33', '41', '55']
x=len(AnyNumber)
for index, list_AnyNumber in enumerate(AnyNumber):
    if index < (x-1):
        if int(AnyNumber[index + 1]) > int(AnyNumber[index]):
            print(str(AnyNumber[index + 1]) + ">" + str(list_AnyNumber))

Основано на это пользователи ответили

261
задан Jonas 28 July 2011 в 02:57
поделиться

4 ответа

Можно преобразовать, но я не думаю, что существует что-либо, встроил, чтобы сделать это автоматически:

public static int[] convertIntegers(List<Integer> integers)
{
    int[] ret = new int[integers.size()];
    for (int i=0; i < ret.length; i++)
    {
        ret[i] = integers.get(i).intValue();
    }
    return ret;
}

(Обратите внимание, что это бросит NullPointerException если также integers или любой элемент в нем null.)

Править: Согласно комментариям, можно хотеть использовать итератор списка для предотвращения противных затрат со списками такой как LinkedList:

public static int[] convertIntegers(List<Integer> integers)
{
    int[] ret = new int[integers.size()];
    Iterator<Integer> iterator = integers.iterator();
    for (int i = 0; i < ret.length; i++)
    {
        ret[i] = iterator.next().intValue();
    }
    return ret;
}
208
ответ дан Marek Sebera 23 November 2019 в 02:36
поделиться

Палата общин Apache имеет класс ArrayUtils, который имеет метод toPrimitive (), который делает точно это.

import org.apache.commons.lang.ArrayUtils;
...
    List<Integer> list = new ArrayList<Integer>();
    list.add(new Integer(1));
    list.add(new Integer(2));
    int[] intArray = ArrayUtils.toPrimitive(list.toArray(new Integer[0]));

Однако, поскольку Jon показал, довольно легко сделать это собой вместо того, чтобы пользоваться внешними библиотеками.

60
ответ дан Björn 23 November 2019 в 02:36
поделиться

использование Dollar должно быть довольно простым:

List<Integer> list = $(5).toList(); // the list 0, 1, 2, 3, 4  
int[] array = $($(list).toArray()).toIntArray();

Я планирую улучшить DSL, чтобы удалить промежуточный вызов toArray ()

{{1} }
6
ответ дан 23 November 2019 в 02:36
поделиться

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

Просто выбирайте Apache Commons

2
ответ дан 23 November 2019 в 02:36
поделиться
Другие вопросы по тегам:

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