Есть ли несинхронизированная версия java.util.Stack
?Есть ли несинхронизированный java.util.Stack?
ArrayList
имеет почти все, что я хочу, за исключением того, что, как представляется, не существует метода, который удаляет последний элемент в арифметическом постоянном времени.
Я хочу что-то, что может действовать как стек, но все же позволяю мне иметь постоянный случайный доступ к элементам.
Если там действительно нет ничего, это не имеет большого значения для меня, чтобы просто раскатать мой собственный или просто использовать java.util.Stack
, но это показалось мне странным, что я не мог найти Stack
«s несинхронизированная коллега, что я подумал, что это может быть интересно спросить (также Googling просто, казалось, указывал мне на другие реализации, а не на класс в стандартной библиотеке).
Что делает синхронизацию нужно делать с ним? – Visionstar
@Visionstar Я слышал, что это было медленнее. Документы, похоже, говорят, что мы [должны «предпочесть» ArrayList над Vector, если параллелизм не является проблемой] (http://docs.oracle.com/javase/7/docs/api/java/util/Vector.html). Но это не совсем важно для моей цели; Мне в основном просто любопытно – math4tots
Я бы поспорил, что 'arrayList.remove (arrayList.size() - 1)' работает в постоянное время, хотя remove() работает в линейном времени в общем случае. Это потому, что я подозреваю, что линейное время в общем случае используется для перемещения всех элементов после удаления элемента вверх по одной позиции в базовом массиве. –