2015-10-01 15 views
3

如果我有BigDecimalList一個對象,是有可能強制轉換的整個列表,以LongList一個值,而不必遍歷每個BigDecimal目的?有沒有辦法來強制轉換大小數的整個列表,以龍的列表值

+3

如果您不想迭代整個列表,您如何計劃從整個列表中獲取值?此外,演員陣容可能無法工作,但有一種方法可以從這些對象中獲取長整型值。 – Makoto

+1

即使您使用自Java 8以來的java stream api,您仍需要遍歷集合中的元素。 –

+0

@Makoto我會稍後迭代它,但我不想做兩次。我對尋找解決方案不太樂觀,我想我必須在每個對象上執行longValue()。 –

回答

3

您將需要迭代這種或那種方式。如果你想「隱藏」的迭代,你可以使用流:

List<Long> longs = bigs.stream().map(BigDecimal::longValue).collect(Collectors.toList()); 

但仍然會有在後臺的迭代。

你提到你不想重複兩次 - 你可以節省多頭供以後使用的流:

LongStream longs = bigs.stream().mapToLong(BigDecimal::longValue); 

,並收集結果之前,對數據流應用額外的操作。

+3

保存一個流供以後使用只能使用一次:一旦流被使用,它不能被重用。 –

+0

@assylias這看起來像我可以使用的東西..非常感謝 –

+0

@JBNizet有一種方法可以通過將它們放入生成器函數中來「重用」流。 – Flown

相關問題