Java:两个链表中的同一组对象

时间:2014-05-15 12:11:18

标签: java linked-list 2d

我想在二维(x和y)中对2D节点(点)进行排序,并允许快速添加和删除。我想说这可以通过两个链表来完成,但发现Java的LinkedList隐藏了用户的链接。即如果我找到一个节点并从一个列表中删除它,我无法从另一个列表中快速删除它。

这可以解决吗?或者我需要编写自己的类来支持两个维度的链接?

2 个答案:

答案 0 :(得分:0)

要从两个列表中删除相同的对象,请创建一个类似于

的包装类
class PointWrap{
    int id = 0;
    Point p = null;
    public PointWrap( int inid, Point inp){
        id = inid;
        p = inp;
    }
}

插件看起来像这样

tree.put( new PointWrap( id++, point) );

当你迭代删除时,只需在删除之前保存id。这样你也可以从其他列表/树中删除。

答案 1 :(得分:0)

我会创建一个复合数据结构。

您会阅读还是写作更多?如果阅读更多,请使用ArrayList;如果写更多,请使用LinkedList。将此结构存储为int []并输入值{x,y},并在每个插入块之后将此结构排序为x值。

此外,维护一个使用y值填充的数组,而不是插入,但在对x-list进行排序时,此数组将填充实际位于x列表中的值。

将所有这些放入一个类中,并将方法绑定在1个引擎盖下。神圣的封装蝙蝠侠!

你可以让类从getByX()或getByY()

返回int [2]

首先要问自己的问题是,“我是否绝对需要一直排序这两个列表,或者只在读取操作块期间排序?”如果你的答案是后者,这对你来说就好了。

需要考虑的另一件事是,您需要队列,双端队列,堆栈还是所有随机访问?