共用方式為


ISpliterator 介面

定義

對象,用於周游和分割來源的專案。

[Android.Runtime.Register("java/util/Spliterator", "", "Java.Util.ISpliteratorInvoker", ApiSince=24)]
[Java.Interop.JavaTypeParameters(new System.String[] { "T" })]
public interface ISpliterator : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/util/Spliterator", "", "Java.Util.ISpliteratorInvoker", ApiSince=24)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "T" })>]
type ISpliterator = interface
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
衍生
屬性
實作

備註

對象,用於周游和分割來源的專案。 分割器所涵蓋的元素來源可以是數位、 CollectionIO 通道或產生器函式。

分割器可以個別周遊元素 (#tryAdvance tryAdvance()) 或循序周遊 (#forEachRemaining forEachRemaining())。

分割器也可以分割部分元素(使用 #trySplit)做為另一個 Spliterator,以用於可能平行作業。 使用無法分割或以高度不平衡或效率低下方式分割的分割器作業不太可能受益於平行處理原則。 周遊和分割尾氣元素;每個分割器僅適用於單一大量計算。

Spliterator 也會從 、、、、#SORTED#NONNULL#CONCURRENT#IMMUTABLE#SIZED、 和 #SUBSIZED中報告一組#characteristics()其結構、來源和元素。#ORDERED#DISTINCT 這些可由Spliterator用戶端使用,以控制、特製化或簡化計算。 例如, Spliterator 會報告 、 的 Spliterator 會報告 DISTINCTSIZED, 而的 Spliterator SortedSet 也會報告 。CollectionSetSORTED 特性會回報為簡單的聯集位集。

某些特性會額外限制方法行為;例如,如果 ORDERED,周遊方法必須符合其記載的順序。 未來可能會定義新的特性,因此實作者不應將意義指派給未列出的值。

「系結」>未報告 <c>IMMUTABLE</c 或 <c>CONCURRENT</c>> 的分割器,預期會有相關文件說明的原則:當分割器 <em>系結<至>元素來源時,以及偵測系結後偵測到元素來源的結構干擾。 <em>晚期綁定</em> Spliterator 會在第一次周遊、第一次分割或第一次查詢預估大小時系結至元素的來源,而不是在建立 Spliterator 時。 不是 <em>晚期綁定</em> 的 Spliterator 會系結至建構點的專案來源,或是第一次叫用任何方法。 在系結之前對來源所做的修改會在周遊 Spliterator 時反映。 系結分割器之後,最好最好地擲回 ConcurrentModificationException 結構干擾。 執行這項操作的分割器稱為 <em>fail-fast</em>。 Spliterator 的大量周遊方法 (#forEachRemaining forEachRemaining()) 可以在周遊所有元素之後優化周遊和檢查結構干擾,而不是立即檢查每個元素並立即失敗。

分割器可以透過 #estimateSize 方法提供剩餘元素數目的估計值。 在理想情況下,如特性 #SIZED所反映,這個值會與成功周遊中遇到的項目數目完全對應。 不過,即使還不清楚,估計值可能仍然對在來源上執行的作業很有用,例如協助判斷是否建議進一步分割或循序周游其餘元素。

儘管在平行演算法中具有明顯的公用程式,但分割器不預期為安全線程;相反地,使用分割器之平行演算法的實作應該確保分割器一次只能由一個線程使用。 這通常很容易透過 <em>序列線程限制</em>來達成,這通常是由遞歸分解運作的典型平行演算法的自然結果。 呼叫 #trySplit() 的線程可能會將傳回的Spliterator移交給另一個線程,而後者可能會周遊或進一步分割該Spliterator。 如果兩個以上的線程在相同的分割器上同時運作,則分割和周游的行為是未定義的。 如果原始線程將分割器交給另一個線程進行處理,最好是在使用 任何元素#tryAdvance(Consumer) tryAdvance()之前發生該交接,因為某些保證(例如分割器的正確性#estimateSize()SIZED)只有在周遊開始之前才有效。

的基本子類型特製化 Spliterator 會針對 OfInt intOfLong longOfDouble double 值提供。 和 Spliterator#forEachRemaining(java.util.function.Consumer) box基本值的子類型預設實作Spliterator#tryAdvance(java.util.function.Consumer)到其對應包裝函式類別的實例。 這類拳擊可能會破壞使用基本特製化所取得的任何效能優勢。 若要避免Boxing,應該使用對應的基本型方法。 例如,Spliterator.OfInt#tryAdvance(java.util.function.IntConsumer)Spliterator.OfInt#forEachRemaining(java.util.function.IntConsumer) 應該用於和Spliterator.OfInt#forEachRemaining(java.util.function.Consumer)的喜好設定Spliterator.OfInt#tryAdvance(java.util.function.Consumer)。 使用 Boxing 型方法 #tryAdvance tryAdvance() 周遊基本值,而且 #forEachRemaining(java.util.function.Consumer) forEachRemaining() 不會影響值轉換成 Boxed 值的順序。

已在1.8中新增。

java.util.SpliteratorJava 檔。

此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。

屬性

Comparator

如果這個 Spliterator 的來源是 #SORTEDComparator則會傳回該 Comparator

ExactSizeIfKnown

如果這個 Spliterator 為 ,則傳回 #estimateSize() 的便利方法, #SIZED否則 -1為 。

Handle

取得基礎 Android 物件的 JNI 值。

(繼承來源 IJavaObject)
JniIdentityHashCode

傳回包裝實例的 值 java.lang.System.identityHashCode()

(繼承來源 IJavaPeerable)
JniManagedPeerState

受控對等的狀態。

(繼承來源 IJavaPeerable)
JniPeerMembers

成員存取和調用支援。

(繼承來源 IJavaPeerable)
PeerReference

JniObjectReference 回已包裝 Java 物件實例的 。

(繼承來源 IJavaPeerable)

方法

Characteristics()

傳回這個Spliterator及其元素的一組特性。

Disposed()

處置實例時呼叫。

(繼承來源 IJavaPeerable)
DisposeUnlessReferenced()

如果這個實例沒有未完成的參考,則呼叫 Dispose(),否則不會執行任何動作。

(繼承來源 IJavaPeerable)
EstimateSize()

傳回周遊所 #forEachRemaining 遇到之元素數目的估計值,或傳回 Long#MAX_VALUE 無限、未知或太昂貴而無法計算的項目數。

Finalized()

實例完成時呼叫。

(繼承來源 IJavaPeerable)
ForEachRemaining(IConsumer)

執行目前線程中每個剩餘元素的指定動作,直到處理所有元素或動作擲回例外狀況為止。

HasCharacteristics(Int32)

如果這個 Spliterator #characteristics 包含所有指定的特性,則傳true回 。

SetJniIdentityHashCode(Int32)

設定所 JniIdentityHashCode傳回的值。

(繼承來源 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

對象,用於周游和分割來源的專案。

(繼承來源 IJavaPeerable)
SetPeerReference(JniObjectReference)

設定所 PeerReference傳回的值。

(繼承來源 IJavaPeerable)
TryAdvance(IConsumer)

如果剩餘的元素存在,則會對它執行指定的動作,並傳 true回 ;否則會傳 false回 。

TrySplit()

如果這個分割器可以分割,則會傳回包含元素的Spliterator,此方法傳回時,此分割器不會涵蓋此分割器。

UnregisterFromRuntime()

取消註冊此實例,讓運行時間不會從未來的 Java.Interop.JniRuntime+JniValueManager.PeekValue 調用傳回它。

(繼承來源 IJavaPeerable)

擴充方法

JavaCast<TResult>(IJavaObject)

執行 Android 執行時間檢查的類型轉換。

JavaCast<TResult>(IJavaObject)

對象,用於周游和分割來源的專案。

GetJniTypeName(IJavaPeerable)

對象,用於周游和分割來源的專案。

適用於