在Eclipse Collections框架的HashBag
中保存了大量元素。現在應該刪除所有出現次數少於k次的元素。原位刪除HashBag
這可以通過做:
bag.removeAll(bag.selectByOccurrences(n->n<k));
不足之處是,這造成在我們的情況下消耗大量的內存中的臨時包實例。
所以,我正在尋找一種就地去除方法,例如,用迭代器。由iterator()
返回的迭代器在具有n次出現的元素上迭代n次,這不合適CPU。更好的做法是迭代底層ObjectIntMap
的所有不同密鑰。在源代碼中,您可以找到一種方法AbstractHashBag.getKeysView()
,但它受保護。有沒有辦法通過公共API或任何其他想法來訪問它,以便就地去除這些元素?