- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我必须使用此 addInOrder 方法将人员添加到我的 LinkedList 中,但按姓氏然后名字的字母顺序排列。一旦我将这个人添加到列表中,我必须返回 true 或 false,具体取决于它是否添加了它。我创建了一个compareTo 方法,如果两个条目具有相同的名字和相同的姓氏,则该方法返回0。如果姓氏按字母顺序排列在与之比较的对象之前,它将返回 -1(如果姓氏相同,则它会检查姓氏)。最后,如果名称按字母顺序排列在与之比较的对象之后,它将返回 1。我已经多次测试了compareTo方法并且可以确认它的工作原理。这是它的代码:
public int compareTo(PhoneDirectoryEntry other) {
if (this.firstName.equals(other.firstName) && this.lastName.equals(other.lastName)) {
return 0;
} else if (this.lastName.compareTo(other.lastName) < 0) {
return -1;
} else if (this.lastName.compareTo(other.lastName) > 0) {
return 1;
} else if (this.firstName.compareTo(other.firstName) < 0) {
return -1;
} else
return 1;
}
}
我的问题依赖于我的 addInOrder 方法。
public boolean addInOrder(String firstName, String lastName, String phoneNumber) {
//to be completed by you
if (list.isEmpty()) {
PhoneDirectoryEntry person = new PhoneDirectoryEntry(firstName, lastName, phoneNumber);
list.add(person);
return true;
} for (int i = 0; i < list.size(); i++) {
if (list.get(i).getLastName().compareTo(lastName) == -1) {
PhoneDirectoryEntry person = new PhoneDirectoryEntry(firstName, lastName, phoneNumber);
list.add(i, person);
return true;
} else if (list.get(i).getLastName().compareTo(lastName) == 1) {
PhoneDirectoryEntry person = new PhoneDirectoryEntry(firstName, lastName, phoneNumber);
list.add(i++, person);
return true;
}
}
return false;
}
我的第一个 if 语句运行得很好,并且总是能够将一个人添加到空列表中。 for 循环也运行。问题出在 if 语句中。我已经尝试了 if 语句的所有变体,例如:
list.get(i).getLastName().compareTo(lastName) == -1 || list.get(i).getFirstName().compareTo(firstName) == 1
但它们都不起作用。所以我只是坚持这条线。如果有人看到我的问题或需要更多信息,请告诉我。谢谢。
最佳答案
您的compareTo方法采用PhoneDirectoryEntry类,因此它将比较两个PhoneDirectoryEntry对象。您在 for 循环中所做的是获取 PhoneDirectoryEntry 类中的姓氏,并调用 string 的compareTo 方法。 String的compareTo方法是java实现的,而不是你的compareTo方法。
关于java - 对无法正确实现 CompareTo 方法的 addInOrder 方法进行故障排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58278032/
目前我有一个 ID 列表的问题,每个 ID 都有一个相关的分数。 例如: ID : SCORE 1 : 12 2:15 3 : 2 4 : 99 我想遍历这些并按分数降序将它们添加到结构中。所以输出看
我必须使用此 addInOrder 方法将人员添加到我的 LinkedList 中,但按姓氏然后名字的字母顺序排列。一旦我将这个人添加到列表中,我必须返回 true 或 false,具体取决于它是否添
我是一名优秀的程序员,十分优秀!