get () из списка, но передача длинного аргумента в Java [дубликат]

Nov 18 2020

Я пытаюсь получить элемент из списка List<Class> listofitems, и у меня есть глобальная переменная positionтипа long. Я хотел бы выступить, listofitems.get(position)но это не позволяет мне сделать это, поскольку getпринимает в intкачестве аргумента. Если я хочу сохранить тип positionas long, есть ли другой способ сделать это? (любым другим способом, кроме преобразования positionв int)?

Ответы

EricLang Nov 18 2020 at 03:18

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

См. Этот ответ: Использование длинного индекса ArrayList в java

D.Sikilai Nov 18 2020 at 03:38

Это момент, когда память нужно запрашивать через Unsafeapi. В случае списка / массивов больше, чем Integer.MAX_VALUE вот ссылка.
ЗАМЕТКА:

  • Напишите свою собственную реализацию списка / массива.
  • Unsafe буквально небезопасно.
  • Такая реализация потребует длинных индексов.
  • Скорость будет обильной.
  • LouisWasserman Nov 18 2020 at 03:42

    Если у вас есть файл List<Class>, и его нельзя изменить на другой тип, тогда вы ничего не можете сделать, кроме как преобразовать longего в int. Невозможно взять произвольный Listи позвонить getс чем-либо, кроме int.