在java中创建并返回集合,然后在main中使用toString打印以打印新集合
这是一个需要使用此处显示的方法回答的问题,没有其他方法(这是一个考试问题) 我有一个在java中创建并返回集合,然后在main中使用toString打印以打印新集合,java,Java,这是一个需要使用此处显示的方法回答的问题,没有其他方法(这是一个考试问题) 我有一个Person和Friends(树集来容纳Person)课程 Person类只是创建了一个带有sName和fName的Person实例 在friends中,我有一个方法getnam姓氏(),该方法查找对象人物的姓氏,并将其添加到一个具有所有匹配姓氏的新集合中: //Gets the surname of the object and create a new set public TreeSet<Person
Person
和Friends
(树集来容纳Person)课程
Person类只是创建了一个带有sName和fName的Person实例
在friends中,我有一个方法getnam姓氏()
,该方法查找对象人物的姓氏,并将其添加到一个具有所有匹配姓氏的新集合中:
//Gets the surname of the object and create a new set
public TreeSet<Person> getSurname(String s){
TreeSet<Person> surname = new TreeSet<Person>();
for(Person currentPerson : friendsSet) {
if(currentPerson.getsName().equals(s)) {
surname.add(currentPerson);
}
}
return surname;
}
public String toString() {
return "Friends [friendsSet=" + friendsSet + "]";
}
它只打印出“玛丽”、“奥基夫”,还应该打印出“罗塞拉”、“奥基夫”
我将返回一个新的树集(getnam姓氏()),其姓氏与方法中使用的参数匹配
然后调用该方法,然后调用toString()方法打印新列表中的所有名称。如果没有看到Person类的实现,我无法调试您的确切问题,但您的问题可能在于从
Comparable
接口实现compareTo(Person p)
方法
如果在比较功能中有类似的功能:
@Override
public int compareTo(Person p) {
return sName.compareTo(p.sName);
}
然后,树集将同时看到Person(“玛丽”、“奥基夫”)
和Person(“罗斯拉”、“奥基夫”)
Person对象作为同一个对象
这是因为集合只包含唯一的元素。它使用compareTo
函数来确定集合中是否已经存在元素
要解决此问题,您需要同时比较姓名和姓氏,如下所示:
@Override
public int compareTo(Person p) {
return fName.compareTo(p.fName) + sName.compareTo(p.sName);
}
@Override
public int compareTo(Person p) {
return fName.compareTo(p.fName) + sName.compareTo(p.sName);
}