El método compact() de java.nio.IntBuffer Class se usa para compactar el búfer dado.
Los valores entre la posición actual del búfer y su límite se copian al principio del búfer. Luego, la posición del búfer se establece en n+1 y su límite se establece en su capacidad. La posición del búfer se establece en el número de flotantes copiados.
Sintaxis:
public abstract IntBuffer compact()
Valor de retorno: este método devuelve el nuevo IntBuffer con el mismo contenido que el de este búfer.
Excepción: este método lanza ReadOnlyBufferException , si este búfer es de solo lectura.
El siguiente programa ilustra el método compact() :
Ejemplos 1:
// Java program to demonstrate // compact() method import java.nio.*; import java.util.*; public class GFG { public static void main(String[] args) { // Declaring the capacity of the IntBuffer int capacity = 10; // Creating the IntBuffer // creating object of Intbuffer // and allocating size capacity IntBuffer ib = IntBuffer.allocate(capacity); // putting the value in Intbuffer ib.put(8); ib.put(9); ib.put(9); // print the IntBuffer System.out.println("Original IntBuffer: " + Arrays.toString(ib.array())); System.out.println("Position: " + ib.position()); System.out.println("limit: " + ib.limit()); // Creating a compacted IntBuffer of same IntBuffer // using compact() method IntBuffer IntBuffer = ib.compact(); // print the IntBuffer System.out.println("\nCompacted IntBuffer: " + Arrays.toString(IntBuffer.array())); System.out.println("Position: " + IntBuffer.position()); System.out.println("limit: " + IntBuffer.limit()); // putting the value in compacted Intbuffer IntBuffer.put(9); // print the IntBuffer System.out.println("\nUpdated Compacted IntBuffer: " + Arrays.toString(IntBuffer.array())); System.out.println("Position: " + IntBuffer.position()); System.out.println("limit: " + IntBuffer.limit()); } }
Original IntBuffer: [8, 9, 9, 0, 0, 0, 0, 0, 0, 0] Position: 3 limit: 10 Compacted IntBuffer: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] Position: 7 limit: 10 Updated Compacted IntBuffer: [0, 0, 0, 0, 0, 0, 0, 9, 0, 0] Position: 8 limit: 10
Ejemplos 2: Para demostrar ReadOnlyBufferException
// Java program to demonstrate // compact() method import java.nio.*; import java.util.*; public class GFG { public static void main(String[] args) { // Declaring the capacity of the IntBuffer int capacity = 10; // Creating the IntBuffer try { // creating object of IntBuffer // and allocating size capacity IntBuffer ib = IntBuffer.allocate(capacity); // putting the value in Intbuffer ib.put(8); ib.put(9); ib.put(9); ib.rewind(); // Creating a read-only copy of IntBuffer // using asReadOnlyBuffer() method IntBuffer ib1 = ib.asReadOnlyBuffer(); // print the ReadOnlyBuffer System.out.print("ReadOnlyBuffer IntBuffer: "); while (ib1.hasRemaining()) System.out.print(ib1.get() + ", "); System.out.println(""); // print the Position of IntBuffer ib System.out.println("\nPosition: " + ib.position()); // print the Limit of IntBuffer ib System.out.println("\nlimit: " + ib.limit()); // Creating a compacted IntBuffer of same ReadOnlyBuffer // using compact() method System.out.println("\nTrying to compact the ReadOnlyBuffer ib1"); IntBuffer IntBuffer = ib1.compact(); } catch (IllegalArgumentException e) { System.out.println("Exception throws " + e); } catch (ReadOnlyBufferException e) { System.out.println("Exception throws " + e); } } }
ReadOnlyBuffer IntBuffer: 8, 9, 9, 0, 0, 0, 0, 0, 0, 0, Position: 0 limit: 10 Trying to compact the ReadOnlyBuffer ib1 Exception throws java.nio.ReadOnlyBufferException
Publicación traducida automáticamente
Artículo escrito por nitin_sharma y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA