我有一个arraylist的arraylist,每个内部arraylist包含2个值,第一个是整数,第二个是字符串,所以基本上它看起来像:{5,some text},{12,some more}}, {3,甚至更多的文本}等,我想做的是把它排序,使它按最大整数到最小的降序排序,所以前面的例子看起来像:{12,更多文字},{ 5,一些文字},{3,甚至更多的文字},任何帮助都会提前感谢
答案 0 :(得分:6)
您的数据结构实际上听起来像是“地图”。 也许你应该研究数据结构,特别是集合接口和类......
如果您仍然认为您所拥有的是“列表”,那么您应该使用正确类型的Comparator或Comparable进行Collections.sort操作
如果List是正确的,那么这是一个数据结构的解决方案;
import java.util.ArrayList;
import java.util.Collections;
public class InnerObject implements Comparable<InnerObject> {
Integer index;
String name;
public InnerObject(Integer index, String name) {
this.index = index;
this.name = name;
}
@Override
public int compareTo(InnerObject other) {
return index.compareTo(other.index);
}
@Override
public String toString() {
return "{" + index + "," + name + "}";
}
public static void main(String[] args) {
ArrayList<InnerObject> list = new ArrayList<InnerObject>();
list.add(new InnerObject(666, "devil"));
list.add(new InnerObject(1, "one"));
list.add(new InnerObject(10, "ten"));
System.out.println("list before order: " + list);
Collections.sort(list);
System.out.println("list after order: " + list);
}
}
答案 1 :(得分:0)
如果内部列表可以包含一个具有2个属性的对象,那将更好。此对象可用于排序。