首页 > 解决方案 > 在进行 Java 字符串比较时 ~ (tilda) 的值是什么?

问题描述

例如:

public static void smallestWord() {
    String smallestWord = "~";
    List<String> words = new ArrayList<>();
    words.add("dba");
    words.add("dba");
    words.add("eba");
    words.add("dca");
    words.add("eca");

    for (String word : words) {
        if (word.compareTo(smallestWord) < 0) {
            smallestWord = word;

        }
    }
}

dba作为正确的最小单词返回,但是~如果我将它保留为空或者.我没有得到正确的答案,我最初初始化了 minimumWord。~Java 词典编纂有什么价值?

标签: javastring

解决方案


Java 中的所有字符都通过其 Unicode 代码点进行比较。~是 Unicode 中的 U+007E (126),它大于所有标准 ASCII 拉丁字符,但小于所有其他脚本中的字符或重音拉丁字符。有关如何比较字符串的更多详细信息,您可以阅读String.compareToJavaDoc

你想要做的可能是这样的:

public static void smallestWord() {
    String smallestWord = null;
    List<String> words = new ArrayList<>();
    words.add("dba");
    words.add("dba");
    words.add("eba");
    words.add("dca");
    words.add("eca");

    for (String word : words) {
        if ((smallestWord == null) || (word.compareTo(smallestWord) < 0)) {
            smallestWord = word;
        }
    }
}

或者,或者,使用标准库:

Collections.min(words);

推荐阅读