【问题标题】:How to sort elements in an ArrayList of Strings?如何对字符串 ArrayList 中的元素进行排序?
【发布时间】:2013-12-16 02:32:54
【问题描述】:
 PhoneBookCollection phoneBook = new PhoneBookCollection();

我有一个 ArrayListPhoneBook 个对象。 (getCollection 方法返回列表)

ArrayList<PhoneBook> list = phoneBook.getCollection();


然后我遍历我的 ArrayList 并在第 i 个索引处获取 PhoneBook 并获取其对应的 Telephone

for(int i = 0; i < list.size(); i++ ){

String phone = phoneBook.getPhoneBook(i).getTelephone();

}

我现在想要做的是按升序对getTelephone 对象进行排序。 我知道 ArrayLists 没有排序方法,所以我在执行此操作时遇到了一些麻烦。

【问题讨论】:

  • 1) 为了尽快获得更好的帮助,请发帖 SSCCE。 2)请不要忘记添加“?”提问!有些人在页面中搜索“?”如果“问题”中不存在,则直接转到下一个(实际)问题。
  • 假设您的电话簿没有按电话号码进行比较,您可以写一个PhoneBookComparator 并使用Collections.sort()

标签: java sorting arraylist


【解决方案1】:

你可以创建一个实现Comparator的类:

public class CustomComparator implements Comparator<PhoneBook> { // Replace PhoneBook with the appropriate
    @Override
    public int compare(PhoneBook t1, PhoneBook t2) {
        return t1.getNumber().compareTo(t2.getNumber()); // Here compare the telephone numbers
    }
}

然后这样做:

Collections.sort(list, new CustomComparator());

【讨论】:

  • 我了解您比较两个电话号码的部分,但我该怎么做Collections.sort(list, new CustomComparator());
  • 这取决于您想要对ArrayList 进行排序的何时何处
  • 我只想对电话号码而不是整个ArrayList 进行排序,因为PhoneBook 对象存储其他属性,例如姓名、地址等...
  • 所以您想要另一个仅对电话进行排序的 ArrayList?
  • 看起来另一个集合是仅对电话进行排序的唯一方法......但我将不得不再次循环,这会增加时间复杂度
【解决方案2】:

您可以使用 java.util.Collections 类对列表进行排序。使用 Collections.sort()。

【讨论】:

    【解决方案3】:

    您可以为此使用java.util.Collections

    【讨论】:

      【解决方案4】:

      最好的方法是使用java.util.Collections的标准方式

      String 类有方法compareTo() 并且会自动排序:

      Collections.sort(nameOfList)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-23
        • 2012-10-14
        • 2011-07-28
        • 2014-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多