gpt4 book ai didi

java - CompareTo 不起作用 - 测试两个字符串的所有组合

转载 作者:行者123 更新时间:2023-12-01 22:38:41 26 4
gpt4 key购买 nike

我的类定义如下...

public static class Connection implements Comparable<Connection>

这是我的compareTo方法。

    @Override
public int compareTo(Connection o) {

List<String> combinations = new ArrayList<String>();

for(String lcp : LCP_ORDER){
for(String state : STATE_ORDER){
combinations.add(lcp + state);
}
}

int result = combinations.indexOf(this.lifecycle + this.connEditState) - combinations.indexOf(o.getLifecycle() + o.getConnEditState());

return result;
}

所以在输出中我将得到..

this lcp = PR
this state = null
o lcp = AD
o state = null
result = 0

这不应返回 0,因为 lcp 不同。我需要一种方法来测试两个字符串的所有组合。有建议吗?

最佳答案

组合列表中,您很可能不会添加两个值之一为null的变体。

在您正在执行的测试中,状态为null,因此将找不到该组合。在这两种情况下,对 indexOf 的调用都将返回 -1,而 - 1 - (-1) 将返回 0.

<小时/>

附注:

  1. 如果可能,您可能希望将组合存储为常量,而不是每次调用 compareTo 时都构建列表。
  2. 您可能希望使用某种分隔符将 lcpstate 分开,以避免冲突(在这种情况下,lcp1 + state1 == lcp2 + state2,例如"ab"+ "c"== "a"+ "bc")(如果存在此类风险)。
  3. 您可能甚至不需要构建组合列表,只需比较 lcp 的索引即可实现 compareTo 方法>分别在LCP_ORDERSTATE_ORDER中声明:

    @Override
    public int compareTo(Connection o) {
    int orderIndex = LCP_ORDER.indexOf(this.lifecyle)
    - LCP_ORDER.indexOf(o.lifecyle);

    if (orderIndex != 0) {
    return orderIndex;
    }

    int stateIndex = STATE_ORDER.indexOf(this.connEditState)
    - STATE_ORDER.indexOf(o.connEditState);

    return stateIndex;
    }

关于java - CompareTo 不起作用 - 测试两个字符串的所有组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26519771/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com