我有一个名为“联系人”的对象,它有很多属性。我还有一个名为 Contact_List 的联系人数组,我必须为 Contact_List 编写一个方法来向其中添加一个 Contact 对象。这部分很简单,但必须确保其中的所有联系人都按照姓氏排序。我已经有一个名为 getLastName 的访问器,它返回姓氏的字符串,但是如何使该方法添加联系人并对其进行排序?请帮忙,一个半小时后到期!
public void add(Contact frnd)
{
if(numContacts == MAX_CONTACTS) // If the List is already full
{
System.out.println("The Contact List is already at Maximum Capicity");
}
else
{
numContacts += 1; // There is one more Contact
Contact_List[numContacts - 1] = frnd; // Assigns the Last Open Spot the new Contact
}
}
最佳答案
看看Arrays.sort()
它接受一个Comparator
,您可以在其中实现您想要排序对象的任何逻辑。如果您想对 List
而不是数组进行排序,还有一个 Collections.sort()
。
编辑: 我不太确定我做的事情是否正确,但我会尝试回答您的具体问题,以及如何在 Java 中实现这样的要求。但是,如果您必须在内部使用数组并处理数组(重新)分配并手动实现排序逻辑,那么这不会很有帮助。
private final Set<Contact> contacts = new TreeSet<Contact>( new Comparator<Contact>() {
@Override
public int compare(Contact c1, Contact c2) {
return c1.getLastName().compareTo(c2.getLastName());
}
});
public void add(Contact contact) {
contacts.add(contact);
}
public Contact[] getContacts() {
return contacts.toArray(new Contact[contacts.size()]);
}
此外,如果姓氏提供了这些联系人的自然顺序,我宁愿让Contact
类实现Comparable
,从而消除需要向 TreeSet
提供 Comparator
。
关于java - 如何根据对象的某个属性对对象数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15561440/