LongBuffer — long 버퍼

LongBuffer — long 버퍼

long 버퍼를 나타내는 추상 클래스예요. 버퍼는 고정된 용량(capacity)을 가지며, position(현재 위치), limit(한계), mark(표시) 상태를 가져요. 이 클래스는 long 버퍼에 대한 네 가지 범주의 연산을 정의해요: 단일 long를 읽고 쓰는 절대·상대 get/put 메서드, 이 버퍼에서 배열로 연속 long 시퀀스를 옮기는 절대·상대 벌크 get 메서드, long 배열이나 다른 long 버퍼에서 이 버퍼로 연속 long 시퀀스를 옮기는 절대·상대 벌크 put 메서드, 그리고 long 버퍼를 컴팩트 하는 메서드예요.

출처: Java API Reference

본문

long 버퍼는 할당(allocation)으로 만들거나 기존 long 배열을 래핑(wrapping)해서 만들 수 있어요. 또한 한 버퍼에서 다른 버퍼로 내용을 복사하는 것도 가능해요. 버퍼는 직접(direct) 버퍼일 수 있고, 읽기 전용으로 만들 수도 있어요.

생성 팩토리

  • public static LongBuffer allocate(int capacity) — 새 long 버퍼를 할당해요. 새 버퍼의 position은 0, limit은 capacity, mark는 정의되지 않으며 각 요소는 0으로 초기화되고 바이트 순서는 기반 하드웨어의 기본 순서예요.
  • public static LongBuffer wrap(long[] array, int offset, int length) — long 배열을 버퍼로 래핑해요. capacity는 array.length, position은 offset, limit은 offset+length예요.
  • public static LongBuffer wrap(long[] array) — long 배열을 버퍼로 래핑해요. capacity와 limit은 array.length예요.

뷰 생성

  • public abstract LongBuffer slice() — 이 버퍼 내용의 공유 하위 시퀀스인 새 long 버퍼를 만들어요. 새 버퍼의 내용은 이 버퍼의 현재 position에서 시작하며, 한쪽의 변경이 다른 쪽에 보여요.
  • public abstract LongBuffer slice(int index, int length) — 이 버퍼 내용의 공유 하위 시퀀스인 새 long 버퍼를 만들어요.
  • public abstract LongBuffer duplicate() — 이 버퍼의 내용을 공유하는 새 long 버퍼를 만들어요. 내용은 같지만 별도의 position/limit/mark를 가져요.
  • public abstract LongBuffer asReadOnlyBuffer() — 이 버퍼의 내용을 공유하는 새 읽기 전용 long 버퍼를 만들어요.

읽기/쓰기

  • public abstract long get() — 상대 get 메서드예요. 이 버퍼의 현재 position에 있는 long를 읽고 position을 증가시켜요.
  • public abstract LongBuffer put(long f) — 상대 put 메서드(선택 연산)예요. 주어진 long를 현재 position에 쓰고 position을 증가시켜요.
  • public abstract long get(int index) — 절대 get 메서드예요. 주어진 인덱스의 long를 읽어요.
  • public abstract LongBuffer put(int index, long f) — 절대 put 메서드(선택 연산)예요. 주어진 인덱스에 long를 써요.
  • public LongBuffer get(long[] dst, int offset, int length) — 상대 벌크 get 메서드예요. 이 버퍼에서 주어진 목적 배열로 long를 옮겨요.
  • public LongBuffer get(long[] dst) — 상대 벌크 get 메서드예요. 이 버퍼에서 주어진 배열 전체로 long를 옮겨요.
  • public LongBuffer get(int index, long[] dst, int offset, int length) — 절대 벌크 get 메서드예요. 이 버퍼의 주어진 인덱스에서 시작해 주어진 배열로 length개의 long를 옮겨요.
  • public LongBuffer get(int index, long[] dst) — 절대 벌크 get 메서드예요. position에 영향을 주지 않고 옮겨요.
  • public LongBuffer put(LongBuffer src) — 상대 벌크 put 메서드(선택 연산)예요. 주어진 원본 버퍼의 남은 long들을 이 버퍼로 옮겨요.
  • public LongBuffer put(int index, LongBuffer src, int offset, int length) — 절대 벌크 put 메서드(선택 연산)예요.
  • public LongBuffer put(long[] src, int offset, int length) — 상대 벌크 put 메서드(선택 연산)예요. 주어진 원본 배열에서 이 버퍼로 long를 옮겨요.
  • public final LongBuffer put(long[] src) — 상대 벌크 put 메서드(선택 연산)예요. 원본 배열의 전체 내용을 옮겨요.
  • public LongBuffer put(int index, long[] src, int offset, int length) — 절대 벌크 put 메서드(선택 연산)예요.
  • public LongBuffer put(int index, long[] src) — 절대 벌크 put 메서드(선택 연산)예요.

백킹 배열

  • public final boolean hasArray() — 이 버퍼가 접근 가능한 long 배열로 백킹되는지 여부를 반환해요.
  • public final long[] array() — 이 버퍼를 백킹하는 long 배열을 반환해요(선택 연산).
  • public final int arrayOffset() — 이 버퍼의 백킹 배열에서 버퍼의 첫 요소의 오프셋을 반환해요(선택 연산).

상태 관리

  • public final LongBuffer position(int newPosition) — 이 버퍼의 position을 설정해요. mark가 정의되어 있고 새 position보다 크면 mark는 버려져요.
  • public final LongBuffer limit(int newLimit) — 이 버퍼의 limit을 설정해요.
  • public final LongBuffer mark() — 이 버퍼의 표시를 position에 설정해요.
  • public final LongBuffer reset() — position을 이전에 표시한 위치로 리셋해요.
  • public final LongBuffer clear() — 이 버퍼를 비워요. position은 0, limit은 capacity, mark는 버려져요. 재사용 전에 호출해요.
  • public final LongBuffer flip() — 이 버퍼를 플립해요. limit은 현재 position으로 설정되고 position은 0이 돼요. 채우고 난 뒤 읽기 전에 호출해요.
  • public final LongBuffer rewind() — 이 버퍼를 되감아요. position은 0, mark는 버려져요. 채널 쓰기나 get 연산 전에 호출해요.
  • public abstract LongBuffer compact() — 이 버퍼를 컴팩트해요(선택 연산). position과 limit 사이의 long들을 시작으로 복사해요.

비교와 기타

  • public abstract boolean isDirect() — 이 long 버퍼가 직접(direct) 버퍼인지 여부를 반환해요.
  • public String toString() — 이 버퍼의 상태를 요약한 문자열을 반환해요.
  • public int hashCode() — 이 버퍼의 현재 해시 코드를 반환해요. 남은 요소들에만 의존해요.
  • public boolean equals(Object ob) — 이 버퍼가 다른 객체와 같은지 여부를 반환해요.
  • public int compareTo(LongBuffer that) — 이 버퍼를 다른 버퍼와 비교해요. 남은 요소들을 사전순으로 비교해요.
  • public int mismatch(LongBuffer that) — 이 버퍼와 주어진 버퍼 사이의 첫 불일치의 상대 인덱스를 찾아 반환해요.
  • public abstract ByteOrder order() — 이 버퍼의 바이트 순서를 반환해요.
LongBuffer buf = LongBuffer.allocate(8);
buf.put(1.5f).put(2.5f).flip();       // 채우고 읽기 준비
while (buf.hasRemaining()) {{
    System.out.println(buf.get());
}}

더 알아보기 (Learn more)