תת-מחלקות עקיפות ידועות AbstractDataBufferWindow <B מרחיב את DataBuffer <?>> |
מיכל שניתן לשינוי לצפייה בחלק מ- DataBuffer
.
לחלונות מאגר נתונים יש גודל קבוע והם יכולים "slide"
לאורך מאגר כדי לספק תצוגות שונות של הנתונים מבלי להקצות מופע מאגר חדש, כמו offset(long)
. זה משפר את הביצועים הכוללים כאשר פעולה זו חוזרת על עצמה לעתים קרובות. לְדוּגמָה:
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;
}
}
מופעי DataBufferWindow
הם מצביים ואינם בטוחים לשרשור.
שיטות ציבוריות
תקציר ב | חיץ () מחזיר את המאגר המגבה את החלון הזה. |
מופשט ארוך | קיזוז () מחזירה את ההיסט הנוכחי של חלון זה במאגר המקורי. |
מופשט ארוך | גודל () מחזירה את גודל חלון המאגר הזה. |
תקציר DataBufferWindow <B> | החלקה (צעד ארוך) מזיז את חלון step במאגר המקורי. |
תקציר DataBufferWindow <B> | slideTo (אינדקס ארוך) מזיז את החלון במיקום הנתון במאגר המקורי. |
שיטות ציבוריות
תקציר ציבורי B buffer ()
מחזיר את המאגר המגבה את החלון הזה.
לכל מופע חלון יש מאגר משלו המספק תצוגה על ה- DataBuffer
המקורי. המאגרים עוברים מוטציה כאשר החלון מחליק לקיזוזים שונים. לְדוּגמָה:
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());
מחזיר
- המאגר של החלון הזה
תקציר ציבורי ארוך היסט ()
מחזירה את ההיסט הנוכחי של חלון זה במאגר המקורי.
תקציר ציבורי בגודל ארוך ()
מחזירה את גודל חלון המאגר הזה.
תקציר ציבורי של DataBufferWindow <B> שקופית (צעד ארוך)
מזיז את חלון step
במאגר המקורי.
גודל החלון נשאר זהה וההיסט שלו מוגדר ל- offset() + step
. אם step
חיובי, החלון יחליק קדימה. אם הוא שלילי, הוא יחליק לאחור.
פרמטרים
שָׁלָב | ערך להוסיף לקיזוז הנוכחי של חלון זה |
---|
מחזיר
- המקרה הזה
זורק
IndexOutOfBoundsException | אם לא ניתן להחליק את החלון מכיוון שהוא חורג מגבולות המאגר המקוריים |
---|
תקציר ציבורי DataBufferWindow <B> slideTo (אינדקס ארוך)
מזיז את החלון במיקום הנתון במאגר המקורי.
גודל החלון נשאר זהה וההיסט שלו מוגדר ל- index
, כך שגישה לערך של buffer()
באינדקס x
תחזיר את הערך ב- index + x
במאגר המקורי.
פרמטרים
מַדָד | קיזוז חדש עבור חלון זה |
---|
מחזיר
- המקרה הזה
זורק
IndexOutOfBoundsException | אם לא ניתן להחליק את החלון מכיוון שהוא חורג מגבולות המאגר המקוריים |
---|