java - 使用带有布尔方法的链表
问题描述
我需要使用包含多个布尔方法的链接列表创建一个电话簿。其中一个是插入,它应该在电话簿中输入一个新的人,如果这个人已经存在,方法电话簿不应该改变。我在实现这个时遇到了麻烦方法,特别是在我应该将用户输入的名称与电话簿中已经存在的名称进行比较的部分。这是我的代码
class PhoneBookList implements PhoneBook {
private int size = 0;
Node head;
private static final class Node {
final Person person;
Node next;
Node(Person person) {
this.person = person;
}
}
public boolean insert(Person person) {
Node n = new Node(person);
Node p = head,prev = null;
if(p == null) {
head = n;
size++;
return true;
}
int comparison = p.name.compareTo(n.name);
if(comparison < 0) {
n.next = p;
p = n;
size++;//
return true;
}
if(comparison == 0) {
return false;
}
Node current = p;
while(current.next !=null && current.next.person < person) {
current = current.next;
}
if(current.next !=null && current.next.person == person) {
return false;
}
n.next = current.next;
current.next = n;
size++;
return true;
}
}
我们必须明确使用这个 compareTo 方法,我无法让它工作。任何指导。以下是错误:
PhoneBookList.java:25: error: cannot find symbol
int comparison = p.name.compareTo(n.name);
^
symbol: variable name
location: variable n of type Node
PhoneBookList.java:25: error: cannot find symbol
int comparison = p.name.compareTo(n.name);
^
symbol: variable name
location: variable p of type Node
PhoneBookList.java:40: error: bad operand types for binary operator '<'
while(current.next !=null && current.next.person < person) {
^
first type: Person
second type: Person
^
first type: Person
second type: Person
谢谢!
解决方案
要检查列表中是否已经存在人员,您需要遍历列表中的所有节点,并将节点中的每个人名与您要插入的人名进行比较。
class PhoneBookList implements PhoneBook {
private int size = 0;
Node head = null;
private static final class Node {
final Person person;
Node next;
Node(Person person) {
this.person = person;
}
}
public boolean insert(Person person) {
Node n = new Node(person);
Node p = head;
if(p == null) {
head = n;
size++;
return true;
} else {
Node temp = p;
int comparison;
while(temp.next != null) {
comparison = temp.person.name.compareTo(person.name);
if(comparison == 0){
return false;
}
temp = temp.next;
}
temp.next = n;
size++;
return true;
}
}
}
推荐阅读
- javascript - React-Redux:我是否必须在单个组件树中的所有组件上使用 connect() 和映射状态/调度?有没有办法只做一次?
- angular - Web服务器路由不适用于Angular7
- python - 为什么 StringField 总是无?
- angular - ngx-bootstrap 是否支持 Angular 4?如果支持,为什么我会收到以下错误?
- javascript - 如何使用 jQuery 将 JSON 文件中的数据显示到 Bootstrap 4 Carousel,包括图像哈希
- reactjs - reactjs如何创建全局变量
- r - 如何将具有特定数据的新列添加到 R 数据框中
- html - 我的子子菜单的位置和打开是错误的
- blueprism - 在列表中选择 SAP 灰色框元素
- angular - 在按钮单击时将日期从 Html 传递到 Angular 中的 Ts