java - 如何根据对象的某个属性对对象数组进行排序?

标签 java

我有一个名为“联系人”的对象,它有很多属性。我还有一个名为 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/

相关文章:

java - 简单的 XML 框架 - 使用单个转换器转换继承的类

java - 获取java中从特定时间起修改过的Notes文档

java - ClassNotFoundException : com. azure.storage.common.policy.RequestRetryOptions

java - 强制 JScrollPane 滚动 (X) 像素

java - Jersey:重定向到 Jersey 根之外

java - Android AudioRecord 的问题

java - 使用maven只部署部分依赖

java - 减去日期;日期格式

java - 将 SWT 小部件添加到 swing JPanel

Java:如何查找是否从基类重写了一个方法?