java中是否有排序对象列表?

时间:2015-05-29 01:12:17

标签: java

我有一个以下成员的对象:

class XNode {
    // key
    long magicNumber;   

    // metadata:
    int x;
    iny y;
    int z;
    double angle;
    double tempreture;
}

我想使用订单列表(键是magicNumber)。

java中是否有已按订单方式实现添加/删除/更新的列表? (我不想为每个操作使用Collections.sort。)

3 个答案:

答案 0 :(得分:3)

  

不允许重复

首先,在XNode中有一个拼写错误。我相信

iny y;

应该是

int y;

然后您可以使用SortedSet(例如TreeSet),

Comparator<XNode> comp = new Comparator<XNode>() {
    @Override
    public int compare(XNode o1, XNode o2) {
        return Long.valueOf(o1.magicNumber).compareTo(o2.magicNumber);
    }
};
SortedSet<XNode> set = new TreeSet<>(comp);

答案 1 :(得分:2)

实施Comparable并按magicNumber

进行比较
public int compare(XNode other) {
    return Long.compare(this.magicNumber, other.magicNumber);
}

并使用TreeSet

答案 2 :(得分:2)

没有排序列表,但您可以使用带有Comparator的排序集:

Set<XNode> set = new TreeSet<>((a, b) -> Long.compare(a.magicNumber, b.magicNumber));

此比较器(lambda)区分magicNumber上的排序。

相关问题