| 
		
	
	
	
		
	Сообщений: 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,967 
	Тем: 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,862 
	Тем: 105 
	Зарегистрирован: Sep 2010
	
 Репутация: 
13,014 
	
	
		Скриптов просто нет    |