Используя длинное, поскольку ArrayList индексируют в Java

Я считаю, что переменные должны быть в AppSettings для Autofac, чтобы найти их.

Вы можете добавить их после прочтения из файла Json: мы делаем это в конструкторе контроллера (у нас есть разные разделы конфигурации для разных ботов)

AddConfigurationSetting("MicrosoftAppId", appId);
AddConfigurationSetting("MicrosoftAppPassword", appPassword);

private static void AddConfigurationSetting(string name, string value)
{
    if (!ConfigurationManager.AppSettings.AllKeys.Contains(name))
    {
        ConfigurationManager.AppSettings[name] = value;
    }
}
11
задан Marc Gravell 14 July 2009 в 22:18
поделиться

6 ответов

Я не уверен, почему Ваш код скомпилировал бы для начала.

Вы, как предполагается, не используете [] в списке массива для доступа к участникам. arraylist является просто списком, который внутренне хранится в массиве. Необходимо использовать список, получают операцию (который все еще был бы O (1)). Запись numlist [индекс] означает, что у Вас есть массив объектов в numlist. Вы не можете переопределить [] операция как в C++.

Кроме того, интервал составляет 32 бита в Java. Наличие массива длины, больше, чем 2^32 (таким образом, Вам были бы нужны долгие индексы), маловероятно, и я даже не уверен, что спецификация позволяет его.

15
ответ дан 3 December 2019 в 01:04
поделиться

Поймите с 32-разрядным международным индексом со знаком к длинному [] обращение к 16 ГБ RAM.

Если Вы действительно серьезно относитесь к получению к большим началам с решетом, Вы не собираетесь сходить с рук несколько вещей в своем текущем impl:

  • ArrayList помещенного в коробку longs
  • Используя [] как упоминания Uri
  • Не систематически подкачка страниц к диску
13
ответ дан 3 December 2019 в 01:04
поделиться

Простое решение: рассмотрение этого num никогда не больше, чем 100 в Вашем примере кода, просто изменитесь, это - тип к int.

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

2
ответ дан 3 December 2019 в 01:04
поделиться

Допустимые пределы Java выстраивают к в большей части Целого числа. Элементы MAX_VALUE. В то время как a List может содержать больше элементов (это верно для Collections в целом), можно только добавить/получить/удалить/установить их использующий int индекс.

Принятие Вас имеет память для этого много элементов (очень вряд ли, я думаю), Вы могли записать свою собственную структуру данных, состоящую из "связанных" массивов. get() и set() методы взяли бы a long индексируйте и выясните соответствующий массив и int индекс в том массиве.

Кроме того, я предложил бы использовать булевские переменные для представления состояния каждого числа, вместо того, чтобы хранить/удалять каждое число явно. Это было бы лучше потому что (1) булевские переменные занимают меньше места, чем longs и (2) смещение элементов (как выполнено ArrayList) во время элемента удаление может быть дорогим.

9
ответ дан 3 December 2019 в 01:04
поделиться

По крайней мере, теоретический максимальный размер массивов Java является Целым числом. MAX_VALUE. Это вызвано тем, что тип индекса массива является согласно спецификации интервалом. В действительности это зависит от Вашей памяти все же.

Таким образом, если Ваш алгоритм действительно зависит от наличия такого большого массива, Вам не повезло с массивами Java.

Как я сомневаюсь, Вам будет нужно все пространство, которое Вы могли записать своему собственному классу набора, который действует как массив, но не нуждается в такой же памяти. Это свернуло бы wholes в адресном пространстве (так сказать). Конечно, это могло бы изменить поведение во время выполнения, которое Вы ожидаете от алгоритма.

4
ответ дан 3 December 2019 в 01:04
поделиться

jScience Библиотека имеет большой вектор по имени Float64Vector. В то время как я никогда не использовал этот Класс, он мог бы соответствовать Вашим потребностям. Никакие обещания.

Править: Zach Scrivena указал в комментариях, что Float64Vector определен размеры к ints. Я признаю ошибку.

0
ответ дан 3 December 2019 в 01:04
поделиться
Другие вопросы по тегам:

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