这个 紧凑的 方法 JAVA尼奥。短缓冲区 类用于压缩给定的缓冲区。缓冲区当前位置与其限制之间的短路(如果有)将复制到缓冲区的开头。也就是说,索引p=位置()处的短路被复制到索引0,索引p+1处的短路被复制到索引1,依此类推,直到索引限制()处的短路被复制到索引n=限制()–1–p。然后缓冲区的位置被设置为n+1,其限制被设置为其容量。标记(如果定义)将被丢弃。缓冲区的位置设置为复制的短路数,而不是零,这样调用此方法后,可以立即调用另一个相对put方法。
null
语法 :
public abstract ShortBuffer compact()
返回值 :此方法返回 新短缓冲区 与此缓冲区的内容相同。
例外 :此方法抛出 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 ShortBuffer int capacity = 10 ; // Creating the ShortBuffer // creating object of shortbuffer // and allocating size capacity ShortBuffer sb = ShortBuffer.allocate(capacity); // putting the value in shortbuffer sb.put(( short ) 856 ); sb.put(( short ) 961 ); sb.put(( short ) 54 ); // print the ShortBuffer System.out.println( "Original ShortBuffer: " + Arrays.toString(sb.array())); System.out.println( "Position: " + sb.position()); System.out.println( "limit: " + sb.limit()); // Creating a compacted ShortBuffer of same ShortBuffer // using compact() method ShortBuffer shortBuffer = sb.compact(); // print the ShortBuffer System.out.println( "Compacted ShortBuffer: " + Arrays.toString(shortBuffer.array())); System.out.println( "Position: " + shortBuffer.position()); System.out.println( "limit: " + shortBuffer.limit()); // putting the value in compacted shortbuffer shortBuffer.put(( short ) 961 ); // print the ShortBuffer System.out.println( "Updated Compacted ShortBuffer: " + Arrays.toString(shortBuffer.array())); System.out.println( "Position: " + shortBuffer.position()); System.out.println( "limit: " + shortBuffer.limit()); } } |
输出:
Original ShortBuffer: [856, 961, 54, 0, 0, 0, 0, 0, 0, 0] Position: 3 limit: 10 Compacted ShortBuffer: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] Position: 7 limit: 10 Updated Compacted ShortBuffer: [0, 0, 0, 0, 0, 0, 0, 961, 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 ShortBuffer int capacity = 10 ; // Creating the ShortBuffer try { // creating object of ShortBuffer // and allocating size capacity ShortBuffer sb = ShortBuffer.allocate(capacity); // putting the value in floatbuffer sb.put(( short ) 856 ); sb.put(( short ) 961 ); sb.put(( short ) 6010 ); sb.rewind(); // Creating a read-only copy of ShortBuffer // using asReadOnlyBuffer() method ShortBuffer sb1 = sb.asReadOnlyBuffer(); // print the ReadOnlyBuffer System.out.print( "ReadOnlyBuffer ShortBuffer: " ); while (sb1.hasRemaining()) System.out.print(sb1.get() + ", " ); System.out.println( "" ); // print the Position of ShortBuffer sb System.out.println( "Position: " + sb.position()); // print the Limit of ShortBuffer fb System.out.println( "limit: " + sb.limit()); // Creating a compacted ShortBuffer of same ReadOnlyBuffer // using compact() method System.out.println( "Trying to compact the ReadOnlyBuffer sb1" ); ShortBuffer floatBuffer = sb1.compact(); } catch (IllegalArgumentException e) { System.out.println( "Exception throws " + e); } catch (ReadOnlyBufferException e) { System.out.println( "Exception throws " + e); } } } |
输出:
ReadOnlyBuffer ShortBuffer: 856, 961, 6010, 0, 0, 0, 0, 0, 0, 0, Position: 0 limit: 10 Trying to compact the ReadOnlyBuffer sb1 Exception throws java.nio.ReadOnlyBufferException
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END