IntBuffer — int 버퍼

IntBuffer — int 버퍼

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

출처: Java API Reference

본문

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

생성 팩토리

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

뷰 생성

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

읽기/쓰기

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

백킹 배열

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

상태 관리

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

비교와 기타

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

더 알아보기 (Learn more)