java – 克隆和减去集 – 这有用吗?
发布时间:2020-12-15 04:50:32 所属栏目:Java 来源:网络整理
导读:private HashMapDataObject,HashSet AllDataObjects;.../** Returns all DataObject elements that are NOT in the specified set. */private DataObject[] invert( HashSetDataObject set ){ HashSetDataObject keys = (HashSet) AllDataObjects.keySet();
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参数减去的DataObjects)转换为HashSet以使用clone,它应该返回一个浅拷贝,然后我可以删除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作为参数,以免对客户造成过度负担. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |