import java.util.*;
import java.util.stream.Collectors;
import java.util.AbstractMap.SimpleImmutableEntry;
import static java.util.stream.Collectors.toList;
class ParseParams {
return Arrays.
stream(url.
split("&")) .map(this::splitQueryParameter)
.
collect(Collectors.
groupingBy(SimpleImmutableEntry
::getKey, LinkedHashMap
::new, Collectors.
mapping(Map.Entry::getValue, toList
()))); }
private SimpleImmutableEntry
<String, String
> splitQueryParameter
(String it
) { final int idx = it.indexOf("=");
String key
= idx
> 0 ? it.
substring(0, idx
) : it
; String value
= idx
> 0 && it.
length() > idx
+ 1 ? it.
substring(idx
+ 1) : null; if (key.contains("<")) {
key = key.replace("<", "");
}
return new SimpleImmutableEntry<>(key, value);
}
}
public class Main {
public static void main
(String[] strg
) {
String str
= "//RULE countryname=Brazil&useryear<=2017&usermonth<=01&userdayofmonth<=15 200"; str = str.substring(str.indexOf(" "), str.lastIndexOf(" "));
try {
ParseParams parse = new ParseParams();
Map
<String, List
<String
>> map
= parse.
parseParams(str
); map.entrySet().forEach(entry -> {
System.
out.
println("Key : " + entry.
getKey() + " Value : " + entry.
getValue()); });
t.printStackTrace();
}
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS51dGlsLnN0cmVhbS5Db2xsZWN0b3JzOwppbXBvcnQgamF2YS51dGlsLkFic3RyYWN0TWFwLlNpbXBsZUltbXV0YWJsZUVudHJ5OwppbXBvcnQgc3RhdGljIGphdmEudXRpbC5zdHJlYW0uQ29sbGVjdG9ycy50b0xpc3Q7CgpjbGFzcyBQYXJzZVBhcmFtcyB7CgogICAgTWFwPFN0cmluZywgTGlzdDxTdHJpbmc+PiBwYXJzZVBhcmFtcyhTdHJpbmcgdXJsKSB7CgogICAgICAgIHJldHVybiBBcnJheXMuc3RyZWFtKHVybC5zcGxpdCgiJiIpKQogICAgICAgICAgICAgICAgLm1hcCh0aGlzOjpzcGxpdFF1ZXJ5UGFyYW1ldGVyKQogICAgICAgICAgICAgICAgLmNvbGxlY3QoQ29sbGVjdG9ycy5ncm91cGluZ0J5KFNpbXBsZUltbXV0YWJsZUVudHJ5OjpnZXRLZXksIExpbmtlZEhhc2hNYXA6Om5ldywgQ29sbGVjdG9ycy5tYXBwaW5nKE1hcC5FbnRyeTo6Z2V0VmFsdWUsIHRvTGlzdCgpKSkpOwogICAgfQoKICAgIHByaXZhdGUgU2ltcGxlSW1tdXRhYmxlRW50cnk8U3RyaW5nLCBTdHJpbmc+IHNwbGl0UXVlcnlQYXJhbWV0ZXIoU3RyaW5nIGl0KSB7CiAgICAgICAgZmluYWwgaW50IGlkeCA9IGl0LmluZGV4T2YoIj0iKTsKICAgICAgICBTdHJpbmcga2V5ID0gaWR4ID4gMCA/IGl0LnN1YnN0cmluZygwLCBpZHgpIDogaXQ7CiAgICAgICAgU3RyaW5nIHZhbHVlID0gaWR4ID4gMCAmJiBpdC5sZW5ndGgoKSA+IGlkeCArIDEgPyBpdC5zdWJzdHJpbmcoaWR4ICsgMSkgOiBudWxsOwogICAgICAgIGlmIChrZXkuY29udGFpbnMoIjwiKSkgewogICAgICAgICAgICBrZXkgPSBrZXkucmVwbGFjZSgiPCIsICIiKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG5ldyBTaW1wbGVJbW11dGFibGVFbnRyeTw+KGtleSwgdmFsdWUpOwogICAgfQp9CgpwdWJsaWMgY2xhc3MgTWFpbiB7CgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gc3RyZykgewoKICAgICAgICBTdHJpbmcgc3RyID0gIi8vUlVMRSBjb3VudHJ5bmFtZT1CcmF6aWwmdXNlcnllYXI8PTIwMTcmdXNlcm1vbnRoPD0wMSZ1c2VyZGF5b2Ztb250aDw9MTUgMjAwIjsKICAgICAgICBzdHIgPSBzdHIuc3Vic3RyaW5nKHN0ci5pbmRleE9mKCIgIiksIHN0ci5sYXN0SW5kZXhPZigiICIpKTsKICAgICAgICB0cnkgewogICAgICAgICAgICBQYXJzZVBhcmFtcyBwYXJzZSA9IG5ldyBQYXJzZVBhcmFtcygpOwogICAgICAgICAgICBNYXA8U3RyaW5nLCBMaXN0PFN0cmluZz4+IG1hcCA9IHBhcnNlLnBhcnNlUGFyYW1zKHN0cik7CiAgICAgICAgICAgIG1hcC5lbnRyeVNldCgpLmZvckVhY2goZW50cnkgLT4gewogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJLZXkgOiAiICsgZW50cnkuZ2V0S2V5KCkgKyAiIFZhbHVlIDogIiArIGVudHJ5LmdldFZhbHVlKCkpOwogICAgICAgICAgICB9KTsKICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgdCkgewogICAgICAgICAgICB0LnByaW50U3RhY2tUcmFjZSgpOwogICAgICAgIH0KICAgIH0KfQ==