假设我知道列表SomeList包含thatObj。下面的代码是否从SomeList中删除了对thatObj的引用?
SomeClass el = (SomeClass) thatObj.clone();
SomeList.remove(el);
如果此方法以某种方式比较对象,则无法通过引用查找。直觉建议它应该使用Object.equals如果引用指向同一个对象,则返回true,因此这段代码将不起作用。
如果没有,那么一个额外的问题:如何从列表中删除,如果没有引用,但知道所有成员的对象有问题?
重写类上的equals方法--这里是javadoc。还可以查看Java中的重写java equals()方法quirk和重写equals和hashCode。
remove
方法在内部使用equals
方法检查列表中的对象。如果equal返回true,则它将被删除。重写equals
方法将允许正确删除对象。以下是ArrayList移除方法的代码,供您参考:
public boolean remove(Object o) {
if (o == null) {
for (int index = 0; index < size; index++)
if (elementData[index] == null) {
fastRemove(index);
return true;
}
} else {
for (int index = 0; index < size; index++)
if (o.equals(elementData[index])) {
fastRemove(index);
return true;
}
}
return false;
}
如果此方法以某种方式比较对象,则无法通过引用查找。直觉建议它应该使用Object.equals如果引用指向同一个对象,则返回true,因此这段代码将不起作用。
是的,你是对的。
如果没有,那么一个额外的问题:如何从列表中删除,如果没有引用,但知道所有成员的对象有问题?
两种可能性:
我使用以下方法将csv文件读入Spark: df=spark.read.format(file_type).options(header='true',quote='\"',ignoreleadingwhitespace='true',inferschema='true').load(file_location) 这是正常行为还是读错了? 更新:我将标记问题作为回答,因为下面的提示是有用的。然而,
问题内容: 我现在正在开发应用程序,并进行全局切换。我想包装起来以方便使用。 然后,我在Firefox控制台中得到此结果。 如果我想使用被呼叫的行号登录该怎么办? 问题答案: 这是一个古老的问题,提供的所有答案都太过分了,存在跨浏览器的重大问题,并且没有提供任何超级有用的东西。该解决方案可在每种浏览器中使用,并完全按需报告所有控制台数据。无需黑客,只需一行代码即可签出codepen。 像这样创建开
java.lang.IllegalStateException:迁移未正确处理data_table 应为:TableInfo{name=“data_table”,columns=url=column{name=“url”,type=“text”,notnull=false,primarykeyposition=0}..... 找到:TableInfo{name='data_table',colum
问题内容: 我想在Java中使用池化连接(因为每个线程创建一个连接非常昂贵),所以我正在使用该对象。我正在跨线程保留我的数据源。因此,我在整个应用程序中仅使用一个数据源,如下所示: 现在,我已经创建了数据源,然后在每个单独的线程中执行以下操作: 我猜我很困惑, 这真的 是在 获取池连接吗? 这个线程安全吗?我注意到PooledConnection具有诸如notify()和wait()之类的方法…这
Mongock看起来很有希望。我们希望在具有多个并行运行的副本的kubernetes服务中使用它。 我们希望在部署我们的服务时,第一个副本将获得mongockLock,并且它的所有ChangeLogs/ChangeSets将在其他副本尝试运行它们之前完成。 我们在kubernetes环境中运行一个mongodb实例,我们希望mongock变更日志/变更集只执行一次。 mongockLock是否保证