java - 在进行 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 词典编纂有什么价值?
解决方案
Java 中的所有字符都通过其 Unicode 代码点进行比较。~
是 Unicode 中的 U+007E (126),它大于所有标准 ASCII 拉丁字符,但小于所有其他脚本中的字符或重音拉丁字符。有关如何比较字符串的更多详细信息,您可以阅读String.compareTo
JavaDoc。
你想要做的可能是这样的:
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);
推荐阅读
- reactjs - 反应组件不显示在服务器上
- mysql - Mysql 不支持事务前隔离级别的任何设计原因?
- java - 跨度未附加到他的父上下文
- powershell - 我可以使用 PowerShell 知道我使用的 DNS 服务器是否是域控制器吗?
- github - Github Desktop:Rebase vs Merge Commit,让分叉保持最新
- java - 使用 @Value 时如何使用 Mockito 模拟地图
- python - 返回python中用户制作容器的切片类型
- javascript - 更智能的代码可避免重复以在一页中控制多个播放器
- angular-animations - 动画时带有轻微曲线的上下滑动动画
- flutter - 如何更新列表