java排序节点列表示例

java排序节点列表示例,java,linked-list,jgrasp,Java,Linked List,Jgrasp,我不熟悉节点列表,需要搜索并检查与给定ID关联的PersonNode是否在列表中 这是我的PersonNode类 public class PersonNode { // instance variables private int m_ID; private String m_name; private PersonNode m_link; // constructor public PersonNode(int ID, String name) { m_ID = ID; m

我不熟悉节点列表,需要搜索并检查与给定ID关联的PersonNode是否在列表中

这是我的PersonNode类

public class PersonNode
{
// instance variables
private int m_ID;
private String m_name;
private PersonNode m_link;

// constructor
public PersonNode(int ID, String name)
{
    m_ID = ID;
    m_name = name;
    m_link = null; 
}
// getters and setters
public void setID(int ID)
{
    m_ID = ID;
}
public int getID()
{
    return m_ID;
}
public String getName()
{
    return m_name;
}
public void setName(String name)
{
    m_name = name;
}
public void setLink(PersonNode link)
{
    m_link = link;
}
public PersonNode getLink()
{ 
    return m_link;  
}
}
这是我的方法类、构造函数和实例变量。我不知道怎么做的方法是contains方法。
我编辑了这门课,但我仍然有很多问题,如果有任何帮助,我将不胜感激

public class SortedPersonList
 {   // instance variables
private PersonNode m_first;
private int m_numElements; 

// constructor
// Do not make any changes to this method!
public SortedPersonList()
{
    m_first = null;
    m_numElements = 0;
}

// check whether the list is empty
// Do not make any changes to this method!
boolean isEmpty()
{
    if (m_first == null)
        return true;
    else
        return false;
}

// return the size of the list (# of Person nodes)
// Do not make any changes to this method!
public int size()
{
    return m_numElements;
}

// check whether a PersonNode associated with the given ID is in the list
public boolean contains(int ID)
{This Method I need help with!!
}
// search for and return the PersonNode associated with the given ID
public PersonNode get(int ID)
{  PersonNode current=m_first;
  while(current!=null)
   {if (current.getID()==ID)
       return current;
   }
   return null;
}

// add a new PersonNode to the list with the given ID and name
public boolean add(int ID, String name)
{ PersonNode newNode=new PersonNode(ID,name);
  PersonNode previous=null;
    if (m_first == null)
  { // add element to an empty list
   m_first = newNode;
   m_first.setLink(previous);
    m_numElements++;}
   else
   {if (newNode.getID()<m_first.getID())
   {previous=m_first;
   m_first=newNode;
   m_first.setLink(previous);
   m_numElements++;
   }
   else
  { m_first.setLink(newNode);
    newNode.setLink(previous);
   m_numElements++;}}

    return true; // replace this statement with your own return
}

// remove a PersonNode associated with the given ID from the list
public boolean remove(int ID)
{PersonNode remove = get(ID);
while(remove.getID()==ID)
{m_first=null;
m_first.setLink(remove.getLink());} 
 m_numElements --;
return true;} 


public String toString()
{
    String listContent = "";
    PersonNode current = m_first;

    while (current != null)
    {
        listContent += "[" + current.getID() + " | " + current.getName() + "] ";
        current = current.getLink();
    }

    return listContent;
}    
public class SortedPersonList
{//实例变量
私有个人节点m_优先;
私人国际货币单位;
//建造师
//请勿对此方法进行任何更改!
公共分类个人列表()
{
m_first=null;
m_numElements=0;
}
//检查列表是否为空
//请勿对此方法进行任何更改!
布尔isEmpty()
{
如果(m_first==null)
返回true;
其他的
返回false;
}
//返回列表的大小(#个人节点数)
//请勿对此方法进行任何更改!
公共整数大小()
{
退货;
}
//检查与给定ID关联的PersonNode是否在列表中
公共布尔包含(int-ID)
{这个方法我需要帮助!!
}
//搜索并返回与给定ID关联的PersonNode
公共PersonNode获取(int ID)
{PersonNode current=m_first;
while(当前!=null)
{if(current.getID()==ID)
回流;
}
返回null;
}
//使用给定的ID和名称将新PersonNode添加到列表中
公共布尔添加(整数ID,字符串名称)
{PersonNode newNode=newpersonnode(ID,name);
PersonNode-previous=null;
如果(m_first==null)
{//将元素添加到空列表中
m_first=newNode;
m_first.setLink(上一个);
m_numElements++}
其他的

{if(newNode.getID()假设您有一个
列表lst
。您想检查带有
id=id
PersonNode
是否在此列表中
lst
。您只需在列表上迭代即可轻松完成此操作:

public boolean contains(int ID) {
    for (PersonNode node : lst) {
        if (node.getID() == ID)
            return true; // node found, we can finish iterating
    }
    return false; // no node with id = ID was found
}
请注意,到目前为止,
SortedPersonList
类中还没有列表。您可能希望有一个列表作为实例变量


或者,如果您决定要实现的是一个等价于
LinkedList
,那么您可以在不使用
foreach
的情况下执行相同的迭代,而是使用
node.getNext()

,这就是我有点困惑的地方。我不允许使用列表和getNext()方法也不可用。测试类会启动SortedPersonList myList=new SortedPersonList();@Jennifer那么这是不可能的。请与您的教授探讨他希望您(或其他同学)如何完成此任务您可能误解了赋值,因为当对象不包含或不包含列表时,即使使用
contains
方法也没有意义,您明白吗?