【问题标题】:sorting list compared to other list in java排序列表与java中的其他列表相比
【发布时间】:2015-10-18 05:01:00
【问题描述】:

我有两个列表,比如 L1 和 L2,数据如下:

   L1:
   {a, def2, a1;
    a, ert4, a2;
    i, ert4, a7;
    i, ght6, a8;
    a, def2, a3;
    o, ght6, a2;
    i, htf,  a8;
   }

   L2:
     {
      a1, 7;
      a2, 9;
      a3, 14;
      a4, 12;
      a5, 18;
      a6, 2;
      a7, 6;
      a8, 15
      }

我想按照列表 l2 中 a1、a2 的值按降序对列表 L1 进行排序。我想要的输出是:

{a, def2, a3;
 a, ert4, a2;
 a, def2, a1;
 i, ert4, a8;
 i, htf, a8;
 i, ght6, a7;
 o, ght6, a2
 }

我知道我们可以使用比较器进行自定义排序,但我不确定如何将它用于不同的列表。 请告诉我我该怎么做。 谢谢

【问题讨论】:

  • 为什么需要两个列表?为什么不将数据包装到一个类中,并且该类只有一个列表?
  • L1 是方法的输入。我从平面文件中读取的输入到 L1 列表。我想按照 a1,a2,... 的值降序排列数据。

标签: java list sorting arraylist collections


【解决方案1】:

首先,L2可以使用地图实现

HashMap<String, Integer> l2

那么你可以为L1中的元素定义一个类

class Element implements Comparable<Element>{
     String value, label; // label is a1,a2,a3....; value is whatever other data you want to store
      int sequence;// used for sorting 
      public int compareTo(Element o)          {
  return this.sequence- o.sequence;
}
}

鉴于,当您阅读 L1 元素时,只需这样做

Element element = new Element();
element.value = "def2";
element.label="a1";
element.sequence = L2.getValue(element.label);

List L1 = new LinkedList();
L1.add(element);

假设L1也是一个集合,比如一个列表,你排序

 Collections.sort(L1);

这将实现您的订购目的。

【讨论】:

  • 能否请您详细说明以下步骤:鉴于,当您阅读 L1 元素时,只需执行 element.sequence = L2.getValue(element.label);假设L1也是一个集合,比如一个列表,你按照Collections.sort(L1);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-08
  • 1970-01-01
  • 1970-01-01
  • 2012-05-01
  • 2014-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多