В Java: то, где способ создать подмассив, который укажет на часть большего массива?

Да. Самым простым способом будет традиционный цикл for;

int[] number = {10, 20, 30, 40, 50}; 

for (int i = 0; i < number.length; i++) {
    if (i != 0) {
        System.out.print(",");
    }
    System.out.print(number[i]);
}

Вы также можете использовать StringJoiner или конкатенацию потока. Но это было бы сложнее, чем просто использовать обычный цикл for, как описано выше.

11
задан Vlad Gudim 6 March 2009 в 11:39
поделиться

3 ответа

При создании массива, поскольку "представление" другого массива не возможно в Java. Но Вы могли использовать java.nio. ByteBuffer, который является в основном классом, который Вы предлагаете в обходном решении № 2. Например:

ByteBuffer subBuf = ByteBuffer.wrap(big, 200, 100).slice().asReadOnlyBuffer();

Никакое копирование не включено (некоторое создание объекта, хотя). Как стандартный класс библиотеки, я также предположил бы, что ByteBuffer, более вероятно, получит специальный режим wrt. Оптимизация "JIT" JVM, чем пользовательская.

22
ответ дан 3 December 2019 в 03:53
поделиться

Если Вы хотите считать файл быстро и с низкоуровневым доступом, проверьте Java nio материал. Вот пример из альманаха Java.

Можно использовать отображенный буфер байта для навигации в содержании файла.

3
ответ дан 3 December 2019 в 03:53
поделиться

Смотрите на источник для java.lang. Строка (это будет в src.zip или src.jar). Вы будете видеть, что у них есть массив символов и затем запуска и конца. Так, да, решение состоит в том, чтобы использовать класс, чтобы сделать это.

Вот ссылка на источник онлайн.

Переменные интереса:

  • значение
  • смещение
  • количество

подстрока является, вероятно, хорошим методом посмотреть на как начальная точка.

Если Вы хотите читать непосредственно из файла, используют java.nio.channels. Класс FileChannel, конкретно карта () метод - который позволит Вам использовать ввод-вывод с отображенной памятью, который будет очень быстр и использовать меньше памяти, чем копирование к массивам.

1
ответ дан 3 December 2019 в 03:53
поделиться
Другие вопросы по тегам:

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