加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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作为参数,以免对客户造成过度负担.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读