Java DoubleBuffer compact()方法及实例

来源:这里教程网 时间:2026-02-17 20:48:56 作者:

Java DoubleBuffer compact()方法及实例

java.nio.DoubleBuffer 类的 compact() 方法用于压缩给定的缓冲区。

缓冲区的当前位置和极限之间的值被复制到缓冲区的开头。然后,缓冲区的位置被设置为n+1,其极限被设置为其容量。缓冲区的位置被设置为复制的浮点数。

语法:

public abstract DoubleBuffer compact()

返回值: 该方法返回 新的DoubleBuffer ,其内容与此缓冲区相同。

异常: 如果这个缓冲区是只读的,这个方法会抛出 ReadOnlyBufferException

下面的程序说明了 compact() 方法。

例子 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: 3limit: 10Compacted DoubleBuffer: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]Position: 7limit: 10Updated Compacted DoubleBuffer: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.609999656677246, 0.0, 0.0]Position: 8limit: 10

示例2: 显示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: 0limit: 10Trying to compact the ReadOnlyBuffer db1Exception throws java.nio.ReadOnlyBufferException

相关推荐