compareTo如何工作?

时间:2015-09-07 17:13:01

标签: java equals comparable compareto

我知道 string encryptedPassword = RunPowerShellCommand("\"" + password + "\" | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString", null); public static string RunPowerShellCommand(string command, Dictionary<string, object> parameters) { using (PowerShell powerShellInstance = PowerShell.Create()) { // Set up the running of the script powerShellInstance.AddScript(command); // Add the parameters if (parameters != null) { foreach (var parameter in parameters) { powerShellInstance.AddParameter(parameter.Key, parameter.Value); } } // Run the command Collection<PSObject> psOutput = powerShellInstance.Invoke(); StringBuilder stringBuilder = new StringBuilder(); if (powerShellInstance.Streams.Error.Count > 0) { foreach (var errorMessage in powerShellInstance.Streams.Error) { if (errorMessage != null) { throw new InvalidOperationException(errorMessage.ToString()); } } } foreach (var outputLine in psOutput) { if (outputLine != null) { stringBuilder.Append(outputLine); } } return stringBuilder.ToString(); } } 会对一个字符串与另一个字符串的相关性返回负面或正面结果,但为什么会出现:

compareTo

是真的

public class Test {
    public static void main(String[] args) {
        String y = "ab2";
        if(y.compareTo("ac3") == -1) {
            System.out.println("Test");
        }
    }
}

也是如此?

3 个答案:

答案 0 :(得分:10)

Comparable.compareTo(o)的一般合同是返回

  • 如果大于另一个对象,则为正整数。
  • 如果它低于另一个对象,则为负整数。
  • 0如果这等于另一个对象。

在您的示例中"ab2".compareTo("ac3") == -1"ab2".compareTo("ab3") == -1 仅表示 "ab2"低于"ac3""ab3"。仅使用这些示例,您无法就"ac3""ab3"做出任何结论。

此结果是预期的,因为b位于字母表中c之前("ab2" < "ac3"}而2位于3之前("ab2" < "ab3" }):Java对字符串lexicographically进行排序。

答案 1 :(得分:1)

如果第一个compareTo(调用该方法的那个)位于第二个String(方法的参数)之前,则String

String返回-1按字典顺序排列。 “ab2”出现在“ab3”之前(因为前两个字符相等,2出现在3之前),也出现在“ac3”之前(因为第一个字符相等而b出现在c之前),所以两个比较都返回-1。 / p>

答案 2 :(得分:1)

compareTo()比较两个字符串的字母顺序。你们两个测试都有一个按字母顺序排序的字符串&#34;之前&#34;你比较它的字符串。换句话说:

  • ab2&lt; ac3(因为b
  • ab2&lt; ab3(因为2&lt; 3)

顺便说一下,你应该使用&#34;&lt; 0&#34;比&#34; == -1&#34;在你的if语句中,因为compareTo规范说该函数返回一个负数,而不是具体的&#34; -1&#34;