我对链表有疑问。我有2节课。一个名为countryNode,第二个名为countryList。 CountryNode有2个参数,一个名为country的变量对象和一个名为countryNode的next的变量。 CountryList采用一个名为countryNode的名为first的参数,该参数包含countryNode对象的链接列表。首先,我创建了一个方法“add()”,它将Country对象作为参数,并将该新对象添加到列表的末尾。我做了。以下是countryList的代码:
public void add(Country country) {
CountryNode a = new CountryNode(country);
CountryNode current = null;
if(isEmpty())
{
a.set(first);
first = a;
}
else{
current = first;
while(current.getNext()!=null)
{
current = current.getNext();
}
current.set(a);
}
}
我无法理解的问题是:一个方法“包含”,它将Country对象作为参数,并检查是否可以在列表中找到该国家/地区的名称。要检查Country类型的对象foo是否等于Country类型的对象栏,您必须覆盖类Country中的“equals方法”。我无法理解这个问题并实施它。
下面是我为country,countryNode编写的代码。
public class Country {
private String countryNames;
private SubscriptionYear[] subscriptions;
private int size;
private int location;
public Country(String country, int arraylength)
{
this.countryNames = country;
this.size = arraylength;
subscriptions = new SubscriptionYear[size];
location = 0;
}
public void addSubscriptionYear(int year, double subscription)
{
subscriptions[location]= new SubscriptionYear(year, subscription);
++location;
}
public double getNumSubscriptionsForPeriod(int start, int end)
{
double sum = 0;
int head = start-subscriptions[0].getYear();
int tail = head+(end-start);
if(head>=0&&tail<subscriptions[subscriptions.length-1].getYear())
{
for(int k=head;k<=tail;k++)
{
sum += subscriptions[k].getSubscription();
}
}else{ sum = -1;}
return sum;
}
public String toString()
{
System.out.print(countryNames+"\t");
for(SubscriptionYear s: subscriptions)
{
//System.out.print(countryNames+"\t");
System.out.print(s.getSubscription()+"\t");
}
System.out.println();
return "";
}
}
我的代码countryNode:
public class CountryNode {
private Country country;
private CountryNode next;
public CountryNode(Country country)
{
this.country = country;
this.next = null;
}
public CountryNode(Country country, CountryNode n)
{
this.country = country;
this.next = n;
}
public void set(CountryNode x)
{
this.next = x;
}
public CountryNode getNext()
{
return this.next;
}
public Country getCountry()
{
return country;
}
}
答案 0 :(得分:0)
Java提供的equals()方法总是检查引用是否相等,如果被比较的两个对象指向同一个引用,则返回结果为2。考虑到您的代码,如果您创建两个Country对象(如下所示)并进行比较,则结果将为false,因为它们未指向相同的引用。
Country c1=new Country("abc", 10);
Country c2=new Country("abc", 10);
这就是为什么我们重写equals方法来比较对象的内容而不是引用。不确定这是否完全回答了你的问题因为我没有得到完整的问题。