【发布时间】:2015-10-26 05:07:15
【问题描述】:
考虑一个代码:
URI one = URI.create("http://localhost:8081/contextRoot/main.html?one=1&second=2");
URI second = URI.create("http://localhost:8081/contextRoot/main.html?second=2&one=1");
System.out.println(one.equals(second));
它会打印出false。有没有办法在没有 URI 参数顺序的情况下测试 URI?
【问题讨论】:
-
@TimBiegeleisen 如何为 Java 运行时定义的类覆盖
equals()?我不确定你想说什么。 -
@ajb 选词错误,抱歉 :-|
-
我没有完整的答案。我将提取查询部分,然后对于每个 URI,在
"&"上使用split创建一个参数数组,然后从每个参数数组创建一个Set<String>,然后比较集合是否相等。您必须比较 URI 的其他部分,或者通过 copmaring 每个部分,或者通过创建没有查询部分的新 URI 并在这些部分上使用equals()。我不知道最后一个是否可行。 -
@ajb 在他澄清之前不要发布答案,但是是的,这种方法似乎很合理。
-
@ajb - 是的,这可能不是最干净的方法。但它会起作用。我想知道是否有这样做的图书馆