这个 紧凑的 方法 JAVA尼奥。IntBuffer 类用于压缩给定的缓冲区。
null
缓冲区当前位置与其限制之间的值将复制到缓冲区的开头。然后将缓冲器的位置设置为n+1,并将其限制设置为其容量。缓冲区的位置设置为复制的浮点数。
语法:
public abstract IntBuffer compact()
返回值: 此方法返回 新IntBuffer 与此缓冲区的内容相同。
例外情况: 这个方法抛出了 ReadOnlyBufferException ,如果此缓冲区是只读的。
下面的程序说明了 紧凑的 方法:
例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( "Compacted 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( "Updated 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
例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 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( "Position: " + ib.position()); // print the Limit of IntBuffer ib System.out.println( "limit: " + ib.limit()); // Creating a compacted IntBuffer of same ReadOnlyBuffer // using compact() method System.out.println( "Trying 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
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END