Разреженный массив
От: err_dev Россия  
Дата: 06.02.19 16:54
Оценка:
Добрый день!
Подскажите пожалуйста какую-нибудь хорошую реализацию на Java.
Про andriod SparseArray Знаю. Не походит.
Благодарю.
array sparse
Re: Разреженный массив
От: · Великобритания  
Дата: 06.02.19 21:14
Оценка:
Здравствуйте, err_dev, Вы писали:

_>Подскажите пожалуйста какую-нибудь хорошую реализацию на Java.

_>Про andriod SparseArray Знаю. Не походит.
_>Благодарю.
Разреженный массив это Map<int, T>, если он не должен быть упорядочен по ключу, то бери hash map. Если не устраивает стандартный jdk HashMap<Integer, T> из-за потребления памяти, выбери другую имплеметацию, проведя перформанс тесты для твоих условий. Вот тут упоминаются несколько вариантов.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re: Разреженный массив
От: vsb Казахстан  
Дата: 06.02.19 21:39
Оценка: +1
http://fastutil.di.unimi.it/docs/it/unimi/dsi/fastutil/BigArrays.html
Re[2]: Разреженный массив
От: · Великобритания  
Дата: 07.02.19 07:59
Оценка: +1
Здравствуйте, vsb, Вы писали:

vsb> http://fastutil.di.unimi.it/docs/it/unimi/dsi/fastutil/BigArrays.html

Это вообще не то. Это нужно для массивов размера более 2 миллиарда элементов, т.к. стандартный int[] ограничен значением MAX_INT.
avalon/2.0.6
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[2]: Разреженный массив
От: err_dev Россия  
Дата: 07.02.19 09:29
Оценка:
Здравствуйте, ·, Вы писали:

Map'ы не подходят. Т.к. массив предполагает операцию вставки, например, в центр списка.
например
[0]=A
[1]=B
[2]=C
[10]=X
[11]=Y
[12]=Z

C 3-го по 9 индекс пустоты.
Если будет вставка, например, между 10 и 11 элементом то индексы этих должны быть увеличены. 11->12, 12->13.
Сделать такое на мапе проблематично.

·>Здравствуйте, err_dev, Вы писали:


_>>Подскажите пожалуйста какую-нибудь хорошую реализацию на Java.

_>>Про andriod SparseArray Знаю. Не походит.
_>>Благодарю.
·>Разреженный массив это Map<int, T>, если он не должен быть упорядочен по ключу, то бери hash map. Если не устраивает стандартный jdk HashMap<Integer, T> из-за потребления памяти, выбери другую имплеметацию, проведя перформанс тесты для твоих условий. Вот тут упоминаются несколько вариантов.
Re: Разреженный массив
От: StanislavK Великобритания  
Дата: 07.02.19 16:58
Оценка:
Здравствуйте, err_dev, Вы писали:

_>Подскажите пожалуйста какую-нибудь хорошую реализацию на Java.

Надо копать в сторону библиотек для работы с линейной алгеброй, например: https://deeplearning4j.org/api/latest/org/nd4j/linalg/api/ndarray/ISparseNDArray.html
Re[3]: Разреженный массив
От: · Великобритания  
Дата: 07.02.19 17:54
Оценка:
Здравствуйте, err_dev, Вы писали:


_>Map'ы не подходят. Т.к. массив предполагает операцию вставки, например, в центр списка.

Ну не то что массив предполагает, но это можно сделать сдвигом, что более менее быстро работает. А какие ещё операции ещё нужны и их какую сложность ты ожидаешь?
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Отредактировано 07.02.2019 17:56 · . Предыдущая версия . Еще …
Отредактировано 07.02.2019 17:55 · . Предыдущая версия .
Re[4]: Разреженный массив
От: err_dev Россия  
Дата: 08.02.19 06:56
Оценка:
Здравствуйте, ·, Вы писали:

Чтоб List<E> имплементил

·>Здравствуйте, err_dev, Вы писали:



_>>Map'ы не подходят. Т.к. массив предполагает операцию вставки, например, в центр списка.

·>Ну не то что массив предполагает, но это можно сделать сдвигом, что более менее быстро работает. А какие ещё операции ещё нужны и их какую сложность ты ожидаешь?
Re: Разреженный массив
От: Pavel Dvorkin Россия  
Дата: 09.02.19 04:56
Оценка:
Здравствуйте, err_dev, Вы писали:

_>Добрый день!

_>Подскажите пожалуйста какую-нибудь хорошую реализацию на Java.

Если элементы вещественные, то

http://commons.apache.org/proper/commons-math/javadocs/api-3.6/org/apache/commons/math3/linear/package-summary.html

SparseRealMatrix, SparseFieldMatrix, SparseRealVector
With best regards
Pavel Dvorkin
Re: Разреженный массив
От: andmed  
Дата: 09.02.19 12:08
Оценка:
Здравствуйте, err_dev, Вы писали:

_>Добрый день!

_>Подскажите пожалуйста какую-нибудь хорошую реализацию на Java.
_>Про andriod SparseArray Знаю. Не походит.
_>Благодарю.

сколько требований... миллиарды элементов, вставка в середину, элементы не численные (судя по Z,T) и О(1) (судя по тому что "массив") обращение.
такого не бывает.

если будет точнее сформулированы требования к поиску/обращению, может быть подумать в сторону связанного списка и подкрепляющей индексной структурой

add: массив миссивов отличная идея!
Отредактировано 09.02.2019 12:11 andmed . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.