IntBuffer compact() method in Java
Last Updated :
20 Sep, 2018
The
compact() method of
java.nio.IntBuffer Class is used to compact the given buffer.
The values between the buffer's current position and its limit are copied to the beginning of the buffer. The buffer's position is then set to n+1 and its limit is set to its capacity. The buffer's position is set to the number of floats copied.
Syntax:
public abstract IntBuffer compact()
Return Value: This method returns the
new IntBuffer with the same content as that of this buffer.
Exception: This method throws the
ReadOnlyBufferException, If this buffer is read-only.
Below program illustrates the
compact() method:
Examples 1:
Java
// 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("\nCompacted 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("\nUpdated Compacted IntBuffer: "
+ Arrays.toString(IntBuffer.array()));
System.out.println("Position: " + IntBuffer.position());
System.out.println("limit: " + IntBuffer.limit());
}
}
Output:
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
Examples 2: To demonstrate ReadOnlyBufferException
Java
// 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("\nPosition: " + ib.position());
// print the Limit of IntBuffer ib
System.out.println("\nlimit: " + ib.limit());
// Creating a compacted IntBuffer of same ReadOnlyBuffer
// using compact() method
System.out.println("\nTrying 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);
}
}
}
Output:
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
Similar Reads
IntBuffer compareTo() method in Java The compareTo() method of java.nio.IntBuffer class is used to compare one buffer to another. Two int buffers are compared by comparing their sequences of remaining elements lexicographically, without regard to the starting position of each sequence within its corresponding buffer. Pairs of int eleme
4 min read
IntBuffer allocate() method in Java The allocate() method of java.nio.IntBuffer Class is used to allocate a new int buffer next to the existing buffer. The new buffer's position will be zero. Its limit will be its capacity. Its mark will be undefined. And each of its elements will be initialized to zero. It will have a backing array,
2 min read
IntBuffer array() method in Java The array() method of java.nio.IntBuffer Class is used to Return the int array that backs this buffer. Modifications to this buffer's content will cause the returned array's content to be modified, and vice versa. Invoke() the hasArray() method are used before invoking this method in order to ensure
3 min read
IntBuffer equals() method in Java The equals() method of java.nio.IntBuffer Class is used to check whether or not the given buffer is equal to another object. Two int buffers are equal if, and only if, They have the same element type, They have the same number of remaining elements, and The two sequences of remaining elements, consi
4 min read
IntBuffer hasArray() method in Java The hasArray() method of java.nio.IntBuffer class is used to ensure whether or not the given buffer is backed by an accessible int array. It returns true if there is an accessible backing array to this buffer, else it returns false. If this method returns true, then the array() and arrayOffset() met
2 min read