Лучший способ реализовать пока l oop в java 8 или позже - PullRequest
1 голос
/ 08 апреля 2020

Я должен удалить все sla sh (/) из начала строки. Итак, я написал

while (convertedUrl.startsWith("\\")) 
{
     convertedUrl = convertedUrl.substring(1);
}

Выше кода создает строку для каждой подстроки. Есть ли лучший способ написать этот код в java 8 или позже? Как я могу сделать это, помня об использовании памяти и производительности.

Ответы [ 2 ]

4 голосов
/ 08 апреля 2020

Я бы предположил:

 int len = str.length();
 int i=0;
 for (; i<len && str.charAt(i) == '\\'; ++i) {
      ;
 }
 return str.substring(i);

Я пишу str вместо convertedUrl, потому что это должно быть по-своему.

Вряд ли это узкое место в производительности , но оригинальный код может работать так же медленно, как O (n ^ 2) (в зависимости от реализации).

0 голосов
/ 08 апреля 2020

Вы можете просто не использовать что-то подобное, чтобы заменить все "/" в одном go

convertedUrl = convertedUrl.replaceAll("\\/","");

Извините за начальный, но я думаю, что это будет делать:

convertedUrl = convertedUrl.replaceFirst("^/*","");

ИЛИ:

convertedUrl = convertedUrl.replaceAll("^/*","");

оба выполнят свою работу! поскольку они заменяют все ведущие символы "/"!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...