DataBufferWindow

interface publique DataBufferWindow
Sous-classes indirectes connues

Un conteneur mutable pour afficher une partie d'un DataBuffer .

Les fenêtres de tampon de données ont une taille fixe et peuvent "slide" le long d'un tampon pour fournir différentes vues des données sans allouer une nouvelle instance de tampon, comme le fait offset(long) . Cela améliore les performances globales lorsque cette opération est répétée fréquemment. Par exemple:

IntDataBuffer bufferA = DataBuffers.ofInts(1024);
 // ... init buffer data
 IntDataBuffer bufferB = DataBuffers.ofInts(1, 2, 3, 4);

 // Return the index of the first occurrence of bufferB in bufferA using a sliding window
 DataBufferWindow<IntDataBuffer> windowA = bufferA.window(4);
 for (int i = 0; i < bufferA.size() - bufferB.size(); ++i) {
     if (windowA.slideTo(i).buffer().equals(bufferB)) {
         return i;
     
 }
 }

Les instances DataBufferWindow sont avec état et ne sont pas thread-safe.

Méthodes publiques

résumé B
tampon ()
Renvoie le tampon qui sauvegarde cette fenêtre.
abstrait long
compenser ()
Renvoie le décalage actuel de cette fenêtre dans le tampon d'origine.
abstrait long
taille ()
Renvoie la taille de cette fenêtre tampon.
abstrait DataBufferWindow <B>
glisser (long pas)
Déplace la fenêtre des éléments step dans le tampon d'origine.
abstrait DataBufferWindow <B>
slideTo (index long)
Déplace la fenêtre à la position donnée dans le tampon d'origine.

Méthodes publiques

tampon B abstrait public ()

Renvoie le tampon qui sauvegarde cette fenêtre.

Chaque instance de fenêtre possède son propre tampon offrant une vue sur le DataBuffer d'origine. Les tampons sont mutés lorsque la fenêtre glisse vers différents décalages. Par exemple:

IntDataBuffer buffer = DataBuffers.of(0, 1, 2, 3);
 DataBufferWindow<IntDataBuffer> window = buffer.window(0, 2);

 IntDataBuffer windowBuffer = window.buffer();
 assertEquals(0, windowBuffer.getInt(0));
 assertEquals(1, windowBuffer.getInt(1));

 window.slideTo(2);
 assertEquals(2, windowBuffer.getInt(0));
 assertEquals(3, windowBuffer.getInt(1));
 assertSame(windowBuffer, window.buffer());
 

Retours
  • le tampon de cette fenêtre

décalage long abstrait public ()

Renvoie le décalage actuel de cette fenêtre dans le tampon d'origine.

résumé public taille longue ()

Renvoie la taille de cette fenêtre tampon.

diapositive publique abstraite DataBufferWindow <B> (étape longue)

Déplace la fenêtre des éléments step dans le tampon d'origine.

La taille de la fenêtre reste la même et son décalage est défini sur offset() + step . Si step est positif, la fenêtre glissera vers l'avant. S’il est négatif, il reculera.

Paramètres
étape valeur à ajouter au décalage actuel de cette fenêtre
Retours
  • cette instance
Jetés
IndexOutOfBoundsException si la fenêtre ne peut pas coulisser car elle dépasse les limites de la mémoire tampon d'origine

public abstrait DataBufferWindow <B> slideTo (index long)

Déplace la fenêtre à la position donnée dans le tampon d'origine.

La taille de la fenêtre reste la même et son décalage est défini sur index , de sorte que l'accès à la valeur de buffer() à l'index x renverra la valeur à index + x dans le tampon d'origine.

Paramètres
indice nouveau décalage pour cette fenêtre
Retours
  • cette instance
Jetés
IndexOutOfBoundsException si la fenêtre ne peut pas coulisser car elle dépasse les limites de la mémoire tampon d'origine