Сообщений: 608
Тем: 5
Зарегистрирован: Feb 2009
Репутация:
2,171
09-21-2012, 03:00 AM
(Сообщение последний раз редактировалось: 09-21-2012, 03:02 AM bloodshed.)
Yorie Написал:
offtop
А я, вообще-то, не Вам это писал, а топикстартеру, т.к. именно он не понимает, как можно это реализовать.
По поводу Вашего совета, высказанного непонятно к чему - если человек не применяет что-либо там, где это можно и даже нужно применять - значит он это не знает или, если знает, но не применяет, то он - плохой разработчик. Это опять же, не в Ваш адрес, а ответ на Ваш "совет". Не нужно бессмысленного агра.
оффтоп
По моему [STIGMATED] не до конца разобрался с regexp'ом, а не в рекурсии, по этому я и принял на свой счёт. Извиняйте за агр.
З.Ы. применение каких-то навыков не всегда оправдано, порой, когда нужно что-то проверить и написанный кусок кода не проживет больше 1 минуты, не стоит париться. Это конечно применимо не ко всем ситуациям. Имхо.
Сообщений: 144
Тем: 9
Зарегистрирован: Jul 2012
Репутация:
2,152
Открыть спойлер
оффтопYorie Написал:[src=java]
public class main
{
public static void main(String[] args)
{
String sample = "Строка {1:2:3}, атататата {4:5:6}, ололо {7:8:9}";
for (String str : replacer(sample))
{
System.out.println(str);
}
}
private static ArrayList<String> replacer(String str)
{
ArrayList<String> results = new ArrayList<String>();
Pattern pattern = Pattern.compile("(\\{(.*?)\\})");
Matcher matcher = pattern.matcher(str);
if (matcher.find())
{
String[] nums = matcher.group(2).split(":");
for (String num : nums)
{
String result = str.replace(matcher.group(1), num);
results.addAll(replacer(result));
}
}
else
{
results.add(str);
}
return results;
}
}
[/src]
Имхо :redlol: Учим мат. часть по рекурсивным функциям.
Всё круто, только Вас не учили обращаться к Pattern.compile() как можно реже? При достаточно частом вызове он становится узким местом.
Код: [src=java]
for(int i = 0; i < 10_000_000; i++)
{
Pattern p = Pattern.compile("(\\{(.*?)\\})");
Matcher m = p.matcher(input);
}
[/src]
work time = 4900 ms
Код: [src=java]
Pattern p = Pattern.compile("(\\{(.*?)\\})");
for(int i = 0; i < 10_000_000; i++)
{
Matcher m = p.matcher(input);
}
[/src]
work time = 570 ms
Сообщений: 1,759
Тем: 13
Зарегистрирован: May 2011
Репутация:
3,205
Camelion Написал:Всё круто, только Вас не учили обращаться к Pattern.compile() как можно реже? При достаточно частом вызове он становится узким местом.
обращение идет в вашем примере, а у него каждый раз создается новый обьект
Сообщений: 3,968
Тем: 90
Зарегистрирован: Nov 2010
Репутация:
15,337
оффтоп, мат
что называется если до*баться, то до каждого).
Сообщений: 1,759
Тем: 13
Зарегистрирован: May 2011
Репутация:
3,205
111
Ro_0TT Написал:
оффтоп, мат
что называется если до*баться, то до каждого).
:redlol::redlol::redlol:
Сообщений: 247
Тем: 3
Зарегистрирован: Feb 2012
Репутация:
1,300
Camelion Написал:
Открыть спойлер
оффтоп
Всё круто, только Вас не учили обращаться к Pattern.compile() как можно реже? При достаточно частом вызове он становится узким местом.
Код: [src=java]
for(int i = 0; i < 10_000_000; i++)
{
Pattern p = Pattern.compile("(\\{(.*?)\\})");
Matcher m = p.matcher(input);
}
[/src]
work time = 4900 ms
Код: [src=java]
Pattern p = Pattern.compile("(\\{(.*?)\\})");
for(int i = 0; i < 10_000_000; i++)
{
Matcher m = p.matcher(input);
}
[/src]
work time = 570 ms
Да, большое спасибо, я еще и оптимизировать должен за топикстартера? Мне делать больше нечего. Как обычно в каждой теме найдется не менее одного пальцетыкателя с бенчмарками в рукавах, лол.
// aka Deft
Сообщений: 118
Тем: 4
Зарегистрирован: Jun 2011
Репутация:
469
Такие агры на вполне безобидные сообщения, жесть... Разрабы, пейте валерьянку.
Сообщений: 5,863
Тем: 105
Зарегистрирован: Sep 2010
Репутация:
13,014
Скриптов просто нет
|