如何在 Java 中的字符串上使用 Comparable CompareTo
我可以用它按 emp id 排序,但我不确定是否可以比较字符串。我收到错误:字符串的运算符未定义。
public int compareTo(Emp i) {
if (this.getName() == ((Emp ) i).getName())
return 0;
else if ((this.getName()) > ((Emp ) i).getName())
return 1;
else
return -1;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您需要使用的是字符串的
compareTo()
方法。那应该做你想做的事。
通常,在实现
Comparable
接口时,您只需组合使用该类的其他Comparable
成员的结果。下面是一个比较典型的compareTo()方法的实现:
What you need to use is the
compareTo()
method of Strings.That should do what you want.
Usually when implementing the
Comparable
interface, you will just combine the results of using otherComparable
members of the class.Below is a pretty typical implementation of a
compareTo()
method:很确定你的代码可以这样写:
Pretty sure your code can just be written like this:
Java String 已经实现了 Comparable。因此,您可以简单地将方法编写为
(当然,请确保添加适当的验证,例如空检查等)。
另外,在代码中,不要尝试使用“==”来比较字符串。请改用“等于”方法。 '==' 仅比较字符串引用,而 equals 在语义上比较两个字符串。
Java String already implements Comparable. So you could simply write your method as
(ofcourse make sure you add proper validations such as null checks etc)
Also in your code, do not try to compare Strings using '=='. Use 'equals' method instead. '==' only compare string references while equals semantically compares two strings.
你不需要将 i 转换为 Emp,它已经是一个 Emp:
You don't need to cast i to Emp, it's already an Emp:
不应该是
if (this.getName() == ((Emp ) i).getName())
if
(this.getName().equals(i.getName()) )
Shouldn't
if (this.getName() == ((Emp ) i).getName())
be
if (this.getName().equals(i.getName()))