在Java中,要共享一個ArrayBuffer,你可以使用clone()
方法或者將ArrayBuffer轉換為ByteBuffer
,然后通過ByteBuffer
的duplicate()
、slice()
等方法來創建新的視圖。這樣,你就可以在不同的對象之間共享同一個ArrayBuffer的內容,而不是共享內存地址。
以下是兩種共享ArrayBuffer的方法:
clone()
方法:import java.nio.ByteBuffer;
public class ArrayBufferSharing {
public static void main(String[] args) {
// 創建一個包含數據的ArrayBuffer
ByteBuffer buffer = ByteBuffer.allocate(10);
buffer.put("Hello, world!".getBytes());
buffer.flip();
// 使用clone()方法創建一個新的ByteBuffer,共享ArrayBuffer的內容
ByteBuffer sharedBuffer = buffer.clone();
// 修改原始ByteBuffer的內容
buffer.put("New data".getBytes());
buffer.flip();
// 輸出原始ByteBuffer和共享ByteBuffer的內容
System.out.println("Original buffer: " + new String(buffer.array()));
System.out.println("Shared buffer: " + new String(sharedBuffer.array()));
}
}
ByteBuffer
的duplicate()
、slice()
等方法:import java.nio.ByteBuffer;
public class ArrayBufferSharing {
public static void main(String[] args) {
// 創建一個包含數據的ArrayBuffer
ByteBuffer buffer = ByteBuffer.allocate(10);
buffer.put("Hello, world!".getBytes());
buffer.flip();
// 使用duplicate()方法創建一個新的ByteBuffer,共享ArrayBuffer的內容
ByteBuffer sharedBuffer1 = buffer.duplicate();
// 使用slice()方法創建一個新的ByteBuffer,共享ArrayBuffer的內容
ByteBuffer sharedBuffer2 = buffer.slice();
// 修改原始ByteBuffer的內容
buffer.put("New data".getBytes());
buffer.flip();
// 輸出原始ByteBuffer和共享ByteBuffer的內容
System.out.println("Original buffer: " + new String(buffer.array()));
System.out.println("Shared buffer 1: " + new String(sharedBuffer1.array()));
System.out.println("Shared buffer 2: " + new String(sharedBuffer2.array()));
}
}
在這兩個示例中,我們首先創建了一個包含字符串"Hello, world!"的ByteBuffer。然后,我們使用clone()
方法或者duplicate()
和slice()
方法創建了新的ByteBuffer,它們共享相同的內存地址和內容。接下來,我們修改了原始ByteBuffer的內容,并輸出了原始ByteBuffer和共享ByteBuffer的內容??梢钥吹?,共享ByteBuffer的內容與原始ByteBuffer的內容相同,即使它們指向不同的內存地址。