У меня есть строка, root?param1=...¶m2=...¶m3=...
, и я хочу создать java-метод, который удалит любые повторяющиеся параметры. Значения всегда будут одинаковыми, но иногда параметры дублируются в соответствии с функцией приложения (не спрашивайте). Для этого,Каков наилучший способ удаления повторяющихся параметров URI из строки?
HTTP://root?param1=value¶m2=value2¶m2=value2param3=value3¶m3=value3¶m1=value¶m1=value
становится
HTTP://root?param1=value¶m2=value2¶m3=value3
Я был вне программирования слишком долго, чтобы вспомнить лучшие способы сделать это, но мой первоначальный ход мысли пошел что-то вроде этого:
Grab каждый параметр и вставить в массив temp, запустить через temp array и сравнить, если array [i] равен любому другому имени параметра. Если да, удалите. Если нет, добавьте обратно в возвращаемую строку. В конце цикла верните строку возврата.
Но для этого потребуется O (n) для длины URI плюс O (m)! для размера массива (m - количество параметров). Я думаю, что это было бы неплохо, учитывая, что я буду использовать этот метод около 5000 x в минуту для всех входящих URI. Есть ли лучший способ сделать это или из готового java-метода, который обрабатывает некоторые из служебных данных?
вам действительно нужно сделать, что ли? Не может ли получатель URL-адреса просто игнорировать дубликат (это то, что большинство реализаций уже делают, если вы явно не просматриваете многозначные параметры)? – Thilo
Как я хочу отслеживать список URL-адресов. Некоторые страницы имеют одно и то же действие, но могут иметь разные URL-адреса (варьируя просто по количеству повторяющихся параметров), и я предпочел бы иметь одну страницу для данного действия, чем дюжину. – user625032