gpt4 book ai didi

java - CopyOnWriteArrayList类的remove(Object o, Object[] snapshot, int index)是如何实现的?

转载 作者:行者123 更新时间:2023-11-30 06:08:41 26 4
gpt4 key购买 nike

我不明白findindex在这里是如何计算的,我从来没有见过这样的东西。请解释下面的代码。

private boolean remove(Object o, Object[] snapshot, int index) {
final ReentrantLock lock = this.lock;
lock.lock();
try {
Object[] current = getArray();
int len = current.length;
if (snapshot != current) findIndex: {
int prefix = Math.min(index, len);
for (int i = 0; i < prefix; i++) {
if (current[i] != snapshot[i] && eq(o, current[i])) {
index = i;
break findIndex;
}
}
if (index >= len)
return false;
if (current[index] == o)
break findIndex;
index = indexOf(o, current, index, len);
if (index < 0)
return false;
}
Object[] newElements = new Object[len - 1];
System.arraycopy(current, 0, newElements, 0, index);
System.arraycopy(current, index + 1,
newElements, index,
len - index - 1);
setArray(newElements);
return true;
} finally {
lock.unlock();
}
}
  • 还有 break findIndex ; 的作用是什么?
  • 您如何称呼这种类型的功能?它是什么时候推出的?
  • findIndex 是变量、方法还是静态 block 之类的东西?它是什么类型?

最佳答案

“findIndex”是一个标签,相应的中断符“直到”该标签。

换句话说:这是一种允许您从嵌套循环内继续/中断外部循环的机制!

这只是普通中断/继续的更强大版本。它很少被使用,因为它会快速增加代码的复杂性(基本上它打破了结构化编程中的单入口/单导出原则)。

从这个角度来看,它是goto命令的Java版本。

关于java - CopyOnWriteArrayList类的remove(Object o, Object[] snapshot, int index)是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50727651/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com