我有两个列表,说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
}
我知道我们可以将比较器用于自定义排序,但是我不确定如何将其用于其他列表。请告诉我我该怎么做。谢谢
首先,可以使用映射实现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);
这样可以达到您的订购目的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句