【问题标题】:Sort in ArrayList in Java在 Java 中的 ArrayList 中排序
【发布时间】:2013-10-28 08:38:30
【问题描述】:

我不知道如何使用 ArrayList 进行排序,我有在病历数组列表中排序日期的示例代码:

  ........
  private List<MedicalHistory> sortByDate(List<MedicalHistory> data) {
    for (int i = 0; i < data.size(); i++) {
        for (int j = i; j < data.size(); j++) {
            if (data.get(i).getDate().compareTo(data.get(j).getDate()) > 0) {
                MedicalHistory m = data.get(j);
                data.set(j , data.get(i));
                data.set(i, m);
               .......

所以首先,我不知道j是什么意思,其次,最后一个data.set代表什么?谁能解释一下它的逻辑流程?谢谢!

【问题讨论】:

  • 你有 Arrays.sort(variable here) 方法或使用自定义对象的比较器
  • 看起来有点像冒泡排序,它具有平均情况的二次复杂度(即它不是很好)。最后一个 data.set 将第 i 个项目设置为第 j 个项目的前一个值(在覆盖之前)。参见例如en.wikipedia.org/wiki/Bubble_sort

标签: java sorting arraylist


【解决方案1】:

j是什么意思

j 是一个迭代器——它可以帮助你“知道”哪个元素是 正在处理中。

最后一个 data.set 代表什么?

data.set() 正在为特定位置的data ArrayList 设置新值 - 因此它将根据排序顺序保存信息。
三行:

    MedicalHistory m = data.get(j);
    data.set(j , data.get(i));
    data.set(i, m);

基本上是将索引i中的ArrayList中的数据与索引j中的数据交换。


作为旁注,您可以使用Collections.sort()ArrayList 进行排序。

【讨论】:

  • 谢谢阿米特,它和数组排序有同样的概念吗?
  • @peiwang 是的,排序数组也可以以非常相似的方式完成。请注意,这种排序虽然效率不高,但有更好的排序算法,例如Quick Sort
  • 所以如果我对 array 或 arraylist 进行排序,最好使用 array.sort() 和 collections.sort(),对吗?
  • Arrays.sort() 和 Collections.sort(),是的。确保您的对象是 Comparable - 或将 Comparator 发送到 sort() 函数。
【解决方案2】:

您可以使用 Collections.sort(data) 进行排序..

【讨论】:

  • 这不是在回答问题。
猜你喜欢
  • 2012-04-23
  • 1970-01-01
  • 2011-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-23
  • 2013-08-20
相关资源
最近更新 更多