[英]Java: the same set of objects in two linked lists
我想在二维(x和y)中对2D节点(点)进行排序,并允许快速添加和删除。 我可以说这可以通过两个链接列表来完成,但是发现Java的LinkedList对用户隐藏了链接。 即,如果找到某个节点并将其从一个列表中删除,则无法从另一个列表中快速删除它。
这是可以解决的,还是我需要编写自己的类来支持两个维度的链接?
要从两个列表中删除同一对象,请创建一个包装类,如下所示
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即可。 这样,您也可以从其他列表/树中删除。
我将制作一个复合数据结构。
您会读还是写更多? 如果要阅读更多,请使用ArrayList; 如果编写更多内容,请使用LinkedList。 让此结构存储int []并将值输入为{x,y},并在每个插入块之后按x值对该结构进行排序。
此外,维护一个由y值填充的数组,而不是在插入时,而是在对x-list进行排序时,用实际在x-list中的值填充此数组。
将所有这些放到一个类中,并在1个引擎盖和神圣封装蝙蝠侠的带领下将这些方法联系在一起!
您可以让类从getByX()或getByY()返回int [2]
首先要问自己的问题是:“我绝对需要两个列表都一直排序吗,还是仅在读取操作块期间排序?” 如果您的答案是后者,那么这对您来说很好。
要考虑的另一件事,您是否需要队列,双端队列,堆栈或所有随机访问?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.