Есть ли какое-либо средство в стандартных библиотеках Java, которое, учитывая CharSequence, создает обратное в O (1) раз?
Я предполагаю, что это "легко" реализовать, просто интересно, существует ли он уже. (Я подозреваю, что причина, по которой это не предлагается, состоит в том, что "простой" способ фактически нарушит кодовые точки мульти- char, но во многих случаях мы знаем, что мы не имеем дело с ними).
Спасибо
Обновление Хе-хе, это немного забавно, что большинство считало это "невозможным", хорошие ребята! Ну, на самом деле это (концептуально) тривиально - псевдоява следует, чтобы дать понять:
class MyReverseString extends String { //of course I can't extend String!
final String delegate;
MyReverseString(String delegate) { this.delegate = delegate; }
int length() { return delegate.length(); }
int charAt(int i) { return delegate.charAt(delegate.length() - 1 - i); }
}
Я оставляю вопрос открытым для еще одного, только в редком случае, что что-то вроде очевидного решения (например, см. Jon Skeet one) уже существует в JDK, и кто-то знает об этом. (Опять же, очень маловероятно из-за этих неприятных кодовых точек).
Изменить Вероятно, путаница исходила от того, что у меня была "строка" в заголовке (но не в String!), тогда как я только просил "обратную сторону CharSequence". Если вы были в замешательстве, извините. Я бы надеялся, что часть O (1) четко определит, о чем просят.
И, кстати, это был вопрос, который заставил меня спросить об этом. (Это случай, когда было бы легче запускать регулярное выражение справа налево, а не слева направо, поэтому может быть какое-то практическое значение даже для реализации простых/сломанных кодовых точек)