El método compact() de java.nio.DoubleBuffer 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 DoubleBuffer compact()
Valor devuelto: este método devuelve el nuevo DoubleBuffer 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 DoubleBuffer int capacity = 10; // Creating the DoubleBuffer // creating object of Doublebuffer // and allocating size capacity DoubleBuffer db = DoubleBuffer.allocate(capacity); // putting the value in Doublebuffer db.put(8.56F); db.put(9.61F); db.put(9.61F); // print the DoubleBuffer System.out.println("Original DoubleBuffer: " + Arrays.toString(db.array())); System.out.println("Position: " + db.position()); System.out.println("limit: " + db.limit()); // Creating a compacted DoubleBuffer of same DoubleBuffer // using compact() method DoubleBuffer DoubleBuffer = db.compact(); // print the DoubleBuffer System.out.println("\nCompacted DoubleBuffer: " + Arrays.toString(DoubleBuffer.array())); System.out.println("Position: " + DoubleBuffer.position()); System.out.println("limit: " + DoubleBuffer.limit()); // putting the value in compacted Doublebuffer DoubleBuffer.put(9.61F); // print the DoubleBuffer System.out.println("\nUpdated Compacted DoubleBuffer: " + Arrays.toString(DoubleBuffer.array())); System.out.println("Position: " + DoubleBuffer.position()); System.out.println("limit: " + DoubleBuffer.limit()); } }
Original DoubleBuffer: [8.5600004196167, 9.609999656677246, 9.609999656677246, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] Position: 3 limit: 10 Compacted DoubleBuffer: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] Position: 7 limit: 10 Updated Compacted DoubleBuffer: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.609999656677246, 0.0, 0.0] Position: 8 limit: 10
Ejemplos 2: Para mostrar 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 DoubleBuffer int capacity = 10; // Creating the DoubleBuffer try { // creating object of DoubleBuffer // and allocating size capacity DoubleBuffer db = DoubleBuffer.allocate(capacity); // putting the value in Doublebuffer db.put(8.56F); db.put(9.61F); db.put(9.61F); db.rewind(); // Creating a read-only copy of DoubleBuffer // using asReadOnlyBuffer() method DoubleBuffer db1 = db.asReadOnlyBuffer(); // print the ReadOnlyBuffer System.out.print("ReadOnlyBuffer DoubleBuffer: "); while (db1.hasRemaining()) System.out.print(db1.get() + ", "); System.out.println(""); // print the Position of DoubleBuffer db System.out.println("\nPosition: " + db.position()); // print the Limit of DoubleBuffer db System.out.println("\nlimit: " + db.limit()); // Creating a compacted DoubleBuffer of same ReadOnlyBuffer // using compact() method System.out.println("\nTrying to compact the ReadOnlyBuffer db1"); DoubleBuffer DoubleBuffer = db1.compact(); } catch (IllegalArgumentException e) { System.out.println("Exception throws " + e); } catch (ReadOnlyBufferException e) { System.out.println("Exception throws " + e); } } }
ReadOnlyBuffer DoubleBuffer: 8.5600004196167, 9.609999656677246, 9.609999656677246, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Position: 0 limit: 10 Trying to compact the ReadOnlyBuffer db1 Exception throws java.nio.ReadOnlyBufferException
Publicación traducida automáticamente
Artículo escrito por pawan_asipu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA