有人能帮忙把这个简洁的Java函数解构成简单的英语吗?
我正在尝试将有人能帮忙把这个简洁的Java函数解构成简单的英语吗?,java,xojo,Java,Xojo,我正在尝试将PriorityQueue类从移植到另一种没有类似数据结构的语言(Xojo)。我正在努力将以下方法分解为伪代码,以便将其转换为Xojo: public E poll(){ 最终目标[]es; 最终结果; if((result=(E)((es=queue)[0]))!=null){ modCount++; 最终整数n; 最终的ex=(E)es[(n=--大小)]; es[n]=null; 如果(n>0){ 最终比较器1-如果((结果=(E)((es=队列)[0])!=null) 首先,
PriorityQueue
类从移植到另一种没有类似数据结构的语言(Xojo)。我正在努力将以下方法分解为伪代码,以便将其转换为Xojo:
public E poll(){
最终目标[]es;
最终结果;
if((result=(E)((es=queue)[0]))!=null){
modCount++;
最终整数n;
最终的ex=(E)es[(n=--大小)];
es[n]=null;
如果(n>0){
最终比较器1-如果((结果=(E)((es=队列)[0])!=null)
首先,它将数组queue
分配给变量es
,并从中获取元素0
,将其转换为tE
泛型类型,并将其分配给result
,然后检查result
是否为空
2-final ex=(E)es[(n=--大小)];
首先java计算--size
然后赋值给int typen
,然后从es
数组中获取n
th,将其强制转换为E
,然后将其赋值给变量x
我想你问的下两行现在已经清楚了!让我们看看我是否能帮上忙:
if((result=(E)((es=queue)[0])!=null)
上面的意思是“将队列
分配给es
,访问其索引0,将其强制转换为类型E
,将其分配给结果
,如果不为空,则执行以下操作”
final ex=(E)es[(n=--大小)];
这意味着“从size
中减去一个,并将新值赋给n
,将其用作es
的索引,并将该元素强制转换为E
类型,然后将其赋给E
类型的最终变量x
最终比较器
这是否意味着“将数组队列分配给变量es
”
对
并访问元素0,如果它不为null,则执行以下操作
对
result=(E)
表达式是什么意思
与上面的两个表达式同时,它还将队列[0]
赋值给结果
。(E)
是对类型的强制转换。因此它基本上只是:
result = queue[0]
加上一些额外的东西
final ex=(E)es[(n=--size)];
?这是否意味着减量size
,将该值分配给n
,然后在es
数组中访问该索引
对
如果是这样,那么这个表达式前面的x=(E)
是什么意思?我猜它的意思是将元素强制转换为E
是的,还是像以前一样的演员阵容
比较器
是一个类变量
为了学究的意思,comparator
很可能是一个实例变量,而不是类变量。请检查它的定义
为什么要将其分配给局部变量cmp
我想复制一个局部变量。我在代码中找不到这样做的好理由,所以这可能是一个错误,或者是以前的代码被更改后留下的东西
第一行的问号是什么意思
问号表示比较器的类型未知,只要它是E
的超类,就可以是任何类型。例如,如果Integer
没有Comparator
但Number
有,那么没关系,Number
是Integer
的超类,这就是好的E不。仅供参考,您正在移植的代码是根据GPLv2授权的。这对从它派生的软件(包括端口)有影响。请参阅,非常感谢您回答了各个问题并提供了明确的解释。我非常感谢。另一个+1链接指向本地分配的原因。这一个确实是错误的创立我。