簡體   English   中英

Collectors.toSet() 和 HashSet

[英]Collectors.toSet() and HashSet

獲取以下示例代碼行:

Set<String> someSet = someColletion.stream().map(p -> p.toString()).collect(Collectors.toSet());

我想要一個HashSet 將調試器帶到代碼中,我確實得到了一個HashSet 我查看了java.util.stream.Collectors.toSet()以觀察以下代碼:

public static <T> Collector<T, ?, Set<T>> toSet() {
    return new CollectorImpl<>((Supplier<Set<T>>) HashSet::new, Set::add,
                               (left, right) -> { left.addAll(right); return left; },
                               CH_UNORDERED_ID);
}

合約保證一個Set ,實現決定一個HashSet 似乎合理。 但是,我的實現需要由HashSet保證的恆定時間查找,而不僅僅是任何舊的Set 如果toSet()的實現決定使用一個FooSet ,這完全在它的權利范圍內,我的實現就會受到影響。

這個問題的最佳實踐解決方案是什么?

如果您想要有保證的HashSet ,請使用Collectors.toCollection(HashSet::new)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM