El método compact() de java.nio.CharBuffer 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 CharBuffer compact()
Valor devuelto: este método devuelve el nuevo CharBuffer 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() :
Ejemplo 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 CharBuffer int capacity = 10; // Creating the CharBuffer // creating object of Intbuffer // and allocating size capacity CharBuffer ic = CharBuffer.allocate(capacity); // putting the value in Intbuffer ic.put('a'); ic.put('b'); ic.put('c'); // print the CharBuffer System.out.println("Original CharBuffer: " + Arrays.toString(ic.array())); System.out.println("Position: " + ic.position()); System.out.println("limit: " + ic.limit()); // Creating a compacted CharBuffer of same CharBuffer // using compact() method CharBuffer CharBuffer = ic.compact(); // print the CharBuffer System.out.println("\nCompacted CharBuffer: " + Arrays.toString(CharBuffer.array())); System.out.println("Position: " + CharBuffer.position()); System.out.println("limit: " + CharBuffer.limit()); // putting the value in compacted Intbuffer CharBuffer.put('g'); // print the CharBuffer System.out.println("\nUpdated Compacted CharBuffer: " + Arrays.toString(CharBuffer.array())); System.out.println("Position: " + CharBuffer.position()); System.out.println("limit: " + CharBuffer.limit()); } }
Producción:
Original CharBuffer: [a, b, c, , , , , , , ] Position: 3 limit: 10 Compacted CharBuffer: [, , , , , , , , , ] Position: 7 limit: 10 Updated Compacted CharBuffer: [, , , , , , , g, , ] Position: 8 limit: 10
Ejemplo 2:
// 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 CharBuffer int capacity = 10; // Creating the CharBuffer try { // creating object of CharBuffer // and allocating size capacity CharBuffer cb = CharBuffer.allocate(capacity); // putting the value in CharBuffer cb.put('a'); cb.put('b'); cb.put('b'); cb.rewind(); // Creating a read-only copy of CharBuffer // using asReadOnlyBuffer() method CharBuffer cb1 = cb.asReadOnlyBuffer(); // print the ReadOnlyBuffer System.out.print("ReadOnlyBuffer CharBuffer: "); while (cb1.hasRemaining()) System.out.print(cb1.get() + ", "); System.out.println(""); // print the Position of CharBuffer cb System.out.println("\nPosition: " + cb.position()); // print the Limit of CharBuffer cb System.out.println("\nlimit: " + cb.limit()); // Creating a compacted CharBuffer of same ReadOnlyBuffer // using compact() method System.out.println("\nTrying to compact the ReadOnlyBuffer cb1"); CharBuffer CharBuffer = cb1.compact(); } catch (IllegalArgumentException e) { System.out.println("Exception throws " + e); } catch (ReadOnlyBufferException e) { System.out.println("Exception throws " + e); } } }
Producción:
ReadOnlyBuffer CharBuffer: a, b, b, , , , , , , , Position: 0 limit: 10 Trying to compact the ReadOnlyBuffer cb1 Exception throws java.nio.ReadOnlyBufferException