Java 获取指向持久对象的指针

Java 获取指向持久对象的指针,java,pointers,object,linked-list,Java,Pointers,Object,Linked List,我有一个包含许多列表元素的双链接列表。所以我可以使用item.next、item.prev等等。。。(如item.next.prev.prev.next.prev也可以) 我想交换两个项目,因此首先需要存储项目A中的下一个和上一个: Item aprev = a.prev; Item anext = a.next; 现在我想把b换成a: a.next = b.next; a.prev = b.prev; a.next.prev = a; a.prev.next = a; 现在我需要将a交换为

我有一个包含许多列表元素的双链接列表。所以我可以使用item.next、item.prev等等。。。(如item.next.prev.prev.next.prev也可以) 我想交换两个项目,因此首先需要存储项目A中的下一个和上一个:

Item aprev = a.prev;
Item anext = a.next;
现在我想把b换成a:

a.next = b.next;
a.prev = b.prev;
a.next.prev = a;
a.prev.next = a;
现在我需要将a交换为b,以便使用以前保存的项目:

b.next = aprev;
b.prev = anext;
...
现在我有麻烦了!aprev是a.prev,现在是b.prev!因此,项目循环到他自己的

我能做些什么来交换这些元素??我需要某种临时项目,但当我覆盖对象时,指向该对象的指针消失时,该如何处理

temp = a.prev;
a.next = b.next;
a.prev = b;
b.next = a;
b.prev = temp;
可以


可以。

基本上您将有两个交换操作,一个用于上一个指针,一个用于下一个指针:

swapPrevPointer(a,b);
swapNextPointer(a,b);


视觉解释

初步名单:

null B--bn-->C
C

基本上,您将有两个交换操作,一个用于上一个指针,一个用于下一个指针:

swapPrevPointer(a,b);
swapNextPointer(a,b);


视觉解释

初步名单:

null B--bn-->C
C

竖起大拇指,把它当作两个谨慎的操作,因为我发现它不那么令人困惑。。。因为我真的不是很聪明;-)说真的,六个上一个和下一个在上下文中同时出现让我完全困惑。哇,谢谢,我得试试这个。。但是我的有什么问题?是因为我做了两个临时变量吗?@reox-在你的最后一行应该是:
b.prev=aprev;b、 下一个=下一个。你必须严格交换下一个和上一个指针-没有“交叉交换”。赞成把它作为两个谨慎的操作,因为我发现它不那么令人困惑。。。因为我真的不是很聪明;-)说真的,六个上一个和下一个在上下文中同时出现让我完全困惑。哇,谢谢,我得试试这个。。但是我的有什么问题?是因为我做了两个临时变量吗?@reox-在你的最后一行应该是:
b.prev=aprev;b、 下一个=下一个。您必须严格交换下一个和上一个指针-没有“交叉交换”。
null <--ap-- A --an--> B --bn--> C 
               <--bp--  
null <--ap-- B --an--> A --bn--> C 
               <--bp--  
B.prev <- ap ____ swapping "prev" pointers
A.prev <- bp _/
B.next <- an ____ swapping "next" pointers
A.next <- bn _/