Dad*_*box 3 java collections clone set subtraction
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();
}
Run Code Online (Sandbox Code Playgroud)
请注意,我不想改变AllDataObjects
这个过程.我将一组AllDataObjects
'键(DataObject
我希望set
参数减去)转换为HashSet以使用clone,它应该返回一个浅拷贝,然后我可以删除它set
而不会影响AllDataObjects
.
这看起来对你好吗?
iny*_*iny 10
创建一个新集合并将要克隆的集合作为参数.这样可以避免投射,因此您不会丢失泛型.
private DataObject[] invert( Set<DataObject> set ){
Set<DataObject> keys = new HashSet<DataObject>(AllDataObjects.keySet());
keys.removeAll( set );
return keys.toArray(new DataObject[]{});
}
Run Code Online (Sandbox Code Playgroud)
还值得注意的是,您应该使用Set而不是HashSet作为参数,以免对客户造成过度负担.
归档时间: |
|
查看次数: |
8709 次 |
最近记录: |