0

我有一个arraylist的arraylist,每个内部arraylist包含2个值,第一个是整数,第二个是字符串,所以基本上它看起来像:{5,一些文本},{12,更多文本},{3,甚至更多文本}等,我想做的是接受它并对其进行排序,使其按从最大整数到最小整数的降序排列,所以前面的例子看起来像:{12,更多文本},{5,一些text}, {3, even more text},任何帮助都会有很大帮助,在此先感谢

4

2 回答 2

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);

    }   
}
于 2012-05-22T13:37:16.013 回答
0

如果您的内部列表可以包含一个具有 2 个属性的对象会更好。该对象可用于排序。

于 2012-05-22T13:35:43.590 回答