Я думаю, самый яркий пример - x^10000 + 3x^2 + 2
или что-то в этом роде. Вы хотите сделать new int[10000]
вместо 3 узлов в TreeMap
? : -)
И, конечно, после сортировки вы можете выполнять итерации, чтобы легче создавать и манипулировать вашим полиномом.
А вы уверены, что числовые программы используют для этого массивы? Я хотел бы видеть цитату из их внутренней реализации, если вы считаете, что это так.
Что касается проблемы занимаемой памяти, стандартная реализация java.util.TreeMap
даст 7 дополнительных ссылок и примитивов, одна из которых имеет ссылку внутри, а другая - 7 ссылок внутри. Итак, вы смотрите на 15 дополнительных ссылок для этого. Каждая запись будет иметь 5 ссылок и примитив, поэтому вместо 2 + 1 * n для вашего массива у вас будет 15 + 6 * n. Таким образом, каждый раз, когда у вас есть (14 + 5 * n) пустых полиномов, использование TreeMap
использует меньше памяти, чем использование массива.
Наименьшим примером этого будет x^20
, который будет иметь 21 элемент массива и 1 ссылку на массив в общей сложности на 22 слова, тогда как TreeMap будет иметь только 21 слово.
Возможно, мне не хватает ссылки в реализации, но я прошел ее довольно хорошо.