我有两个StringBuilder对象,我需要在Java中比较它们.我知道我能做的一种方式是
sb1.toString().equals(sb2.toString());
Run Code Online (Sandbox Code Playgroud)
但这意味着我正在创建两个String对象,有没有更好的方法来比较StringBuilder对象.可能你不需要创建其他对象的东西?
Ern*_*ill 37
正如你显然已经知道,StringBuilder继承equals()从java.lang.Object,因此StringBuilder.equals()返回true,只有当通过了相同的对象作为参数.它没有比较两个StringBuilders 的内容!
如果你查看源代码,你会得出结论,最有效的比较(不涉及创建任何新对象)将比较.length()返回值,然后如果它们相同,则比较charAt(i)每个的返回值字符.
从Java 11开始StringBuilder实现Comparable,所以你可以使用一个compareTo方法进行相等性测试:
System.out.println(sb1.compareTo(sb2) == 0);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25406 次 |
| 最近记录: |