Partager via


ISpliterator Interface

Définition

Objet permettant de parcourir et de partitionner des éléments d’une source.

[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
Dérivé
Attributs
Implémente

Remarques

Objet permettant de parcourir et de partitionner des éléments d’une source. La source des éléments couverts par un Spliterator peut être, par exemple, un tableau, un Collectioncanal d’E/S ou une fonction de générateur.

Un fractionneur peut parcourir des éléments individuellement (#tryAdvance tryAdvance()) ou séquentiellement en bloc (#forEachRemaining forEachRemaining()).

Un fractionneur peut également partitionner certains de ses éléments (à l’aide #trySplit) comme un autre séparateur, à utiliser dans des opérations éventuellement parallèles. Les opérations utilisant un séparateur qui ne peut pas fractionner, ou le fait de manière hautement déséquilibrée ou inefficace, ne sont pas susceptibles de bénéficier du parallélisme. Traversal et fractionnement des éléments d’échappement ; chaque fractionneur est utile pour un seul calcul en bloc.

Un fractionneur signale également un ensemble de #characteristics() sa structure, de sa source et de ses éléments parmi #ORDERED, , #SORTED#DISTINCT, , #SIZED, , #NONNULL, , #IMMUTABLE#CONCURRENTet #SUBSIZED. Ceux-ci peuvent être utilisés par les clients Spliterator pour contrôler, spécialiser ou simplifier le calcul. Par exemple, un séparateur d’un Collection rapport SIZEDde fractionnement , un séparateur pour un Set rapport d’un rapport DISTINCTet un séparateur pour un SortedSet rapport signale SORTEDégalement . Les caractéristiques sont signalées sous la forme d’un simple jeu de bits unioné.

Certaines caractéristiques limitent également le comportement des méthodes ; par exemple, si ORDEREDles méthodes traversées doivent être conformes à leur classement documenté. De nouvelles caractéristiques peuvent être définies à l’avenir. Les implémenteurs ne doivent donc pas affecter de significations à des valeurs non répertoriées.

« binding « >A Spliterator qui ne signale <pas c>IMMUTABLE</c ou <c>> CONCURRENT</c> est censé avoir une stratégie documentée concernant : quand le fractionneur <em>lie</em> à la source de l’élément ; et la détection d’interférence structurelle de la source d’élément détectée après la liaison. >Un <séparateur em late-binding</em> est lié à la source des éléments au point de la première traversée, du premier fractionnement ou de la première requête pour une taille estimée, plutôt qu’au moment de la création du spliterator. Un séparateur qui n’est pas <>em late-binding</em> lie à la source des éléments au point de construction ou d’appel d’une première méthode. Les modifications apportées à la source avant la liaison sont reflétées lorsque l’analyseur de fractionnement est parcouru. Après la liaison d’un fractionneur, sur une base optimale, lèvez ConcurrentModificationException si des interférences structurelles sont détectées. Les séparateurs qui effectuent cette opération sont appelés <em>fail-fast</em>. La méthode de traversée en bloc (#forEachRemaining forEachRemaining()) d’un spliterator peut optimiser la traversée et vérifier les interférences structurelles après que tous les éléments ont été parcourus, plutôt que de vérifier par élément et d’échouer immédiatement.

Les fractionneurs peuvent fournir une estimation du nombre d’éléments restants via la #estimateSize méthode. Dans l’idéal, comme indiqué dans la caractéristique #SIZED, cette valeur correspond exactement au nombre d’éléments qui seraient rencontrés dans une traversée réussie. Toutefois, même si elle n’est pas exactement connue, une valeur estimée peut toujours être utile pour les opérations effectuées sur la source, telles que l’aide à déterminer s’il est préférable de fractionner davantage ou de parcourir les éléments restants de manière séquentielle.

Malgré leur utilité évidente dans les algorithmes parallèles, les séparateurs ne sont pas censés être thread-safe ; Au lieu de cela, les implémentations d’algorithmes parallèles utilisant des séparateurs doivent s’assurer que le fractionneur n’est utilisé que par un seul thread à la fois. Cela est généralement facile à atteindre via <>em serial thread-confinement</em>, qui est souvent une conséquence naturelle d’algorithmes parallèles classiques qui fonctionnent par la décomposition récursive. Un appel #trySplit() de thread peut remettre le fractionneur retourné à un autre thread, qui peut à son tour traverser ou fractionner davantage ce spliterator. Le comportement de fractionnement et de traversée n’est pas défini si deux threads ou plus fonctionnent simultanément sur le même séparateur. Si le thread d’origine affecte un séparateur à un autre thread pour le traitement, il est préférable que ce transfert se produise avant que les éléments ne soient consommés avec #tryAdvance(Consumer) tryAdvance(), car certaines garanties (telles que la précision des fractionneurs) ne sont valides que avant le début de #estimateSize()SIZED la traversée.

Les spécialisations de sous-type primitives sont Spliterator fournies pour OfInt int, OfLong longet OfDouble double les valeurs. Implémentations par défaut par défaut de sous-types de Spliterator#tryAdvance(java.util.function.Consumer)Spliterator#forEachRemaining(java.util.function.Consumer) valeurs primitives box à des instances de leur classe wrapper correspondante. Cette boxe peut compromettre les avantages de performances obtenus à l’aide des spécialisations primitives. Pour éviter la boxe, les méthodes primitives correspondantes doivent être utilisées. Par exemple, Spliterator.OfInt#tryAdvance(java.util.function.IntConsumer) et Spliterator.OfInt#forEachRemaining(java.util.function.IntConsumer) doit être utilisé en préférence pour Spliterator.OfInt#tryAdvance(java.util.function.Consumer) et Spliterator.OfInt#forEachRemaining(java.util.function.Consumer). Traversée de valeurs primitives à l’aide de méthodes #tryAdvance tryAdvance() basées sur la boxe et #forEachRemaining(java.util.function.Consumer) forEachRemaining() n’affecte pas l’ordre dans lequel les valeurs, transformées en valeurs boxées, sont rencontrées.

Ajouté dans la version 1.8.

Documentation Java pour java.util.Spliterator.

Les parties de cette page sont des modifications basées sur le travail créé et partagé par le projet Android Open Source et utilisés en fonction des termes décrits dans la licence d’attribution Creative Commons 2.5.

Propriétés

Comparator

Si la source de ce splitérateur est #SORTED par un Comparator, retourne cette Comparatorpropriété .

ExactSizeIfKnown

Méthode pratique qui retourne #estimateSize() si ce Spliterator est #SIZED, sinon -1.

Handle

Obtient la valeur JNI de l’objet Android sous-jacent.

(Hérité de IJavaObject)
JniIdentityHashCode

Retourne la valeur de java.lang.System.identityHashCode() l’instance encapsulée.

(Hérité de IJavaPeerable)
JniManagedPeerState

État de l’homologue managé.

(Hérité de IJavaPeerable)
JniPeerMembers

Prise en charge de l’accès aux membres et de l’appel.

(Hérité de IJavaPeerable)
PeerReference

Retourne une JniObjectReference instance d’objet Java encapsulée.

(Hérité de IJavaPeerable)

Méthodes

Characteristics()

Retourne un ensemble de caractéristiques de ce Spliterator et de ses éléments.

Disposed()

Appelé lorsque l’instance a été supprimée.

(Hérité de IJavaPeerable)
DisposeUnlessReferenced()

S’il n’existe aucune référence en suspens à cette instance, les appels Dispose(); sinon, ne fait rien.

(Hérité de IJavaPeerable)
EstimateSize()

Retourne une estimation du nombre d’éléments qui seraient rencontrés par une #forEachRemaining traversée, ou retourne Long#MAX_VALUE si infini, inconnu ou trop coûteux à calculer.

Finalized()

Appelé lorsque l’instance a été finalisée.

(Hérité de IJavaPeerable)
ForEachRemaining(IConsumer)

Effectue l’action donnée pour chaque élément restant, de manière séquentielle dans le thread actuel, jusqu’à ce que tous les éléments aient été traités ou que l’action lève une exception.

HasCharacteristics(Int32)

Retourne true si les fractionneurs #characteristics contiennent toutes les caractéristiques données.

SetJniIdentityHashCode(Int32)

Définissez la valeur retournée par JniIdentityHashCode.

(Hérité de IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Objet permettant de parcourir et de partitionner des éléments d’une source.

(Hérité de IJavaPeerable)
SetPeerReference(JniObjectReference)

Définissez la valeur retournée par PeerReference.

(Hérité de IJavaPeerable)
TryAdvance(IConsumer)

Si un élément restant existe, effectue l’action donnée sur celle-ci, en retournant true; sinon, retourne false.

TrySplit()

Si ce fractionneur peut être partitionné, retourne un séparateur couvrant les éléments, qui, à partir de cette méthode, ne sera pas couvert par ce spliterator.

UnregisterFromRuntime()

Annulez l’inscription de cette instance afin que le runtime ne le retourne pas à partir d’appels futurs Java.Interop.JniRuntime+JniValueManager.PeekValue .

(Hérité de IJavaPeerable)

Méthodes d’extension

JavaCast<TResult>(IJavaObject)

Effectue une conversion de type vérifiée par le runtime Android.

JavaCast<TResult>(IJavaObject)

Objet permettant de parcourir et de partitionner des éléments d’une source.

GetJniTypeName(IJavaPeerable)

Objet permettant de parcourir et de partitionner des éléments d’une source.

S’applique à