gpt4 book ai didi

java - 克隆和减法集 - 这行得通吗?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:37:07 25 4
gpt4 key购买 nike

private HashMap<DataObject, HashSet> AllDataObjects;

...

/** Returns all DataObject elements that are NOT in the specified set. */
private DataObject[] invert( HashSet<DataObject> set )
{
HashSet<DataObject> keys = (HashSet) AllDataObjects.keySet();
keys = (HashSet) keys.clone();

keys.removeAll( set );

return (DataObject[]) keys.toArray();
}

请注意,我不想通过此过程更改 AllDataObjects。我将 AllDataObjects 键集(这是我希望从中减去 set 参数的 DataObject)转换为 HashSet 以使用克隆,它应该会返回一个浅拷贝,然后我可以从中删除 set 而不会影响 AllDataObjects

这对你来说合适吗?

最佳答案

创建一个新集合并将要克隆的集合作为参数。这避免了强制转换,因此您不会丢失泛型。

private DataObject[] invert( Set<DataObject> set ){
Set<DataObject> keys = new HashSet<DataObject>(AllDataObjects.keySet());
keys.removeAll( set );
return keys.toArray(new DataObject[]{});
}

还值得注意的是,您应该使用 Set 而不是 HashSet 作为参数,以免给您的客户造成过度负担。

关于java - 克隆和减法集 - 这行得通吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/394127/

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