Yığın üzerinde yeni bir dizi oluşturmadan Java'da bir dizinin bir parçasını kapmak
Bir dizinin bir parçasını döndüren Java bir yöntem arıyorum. Örnek bir bayt dizisi bayt bir dizi 4 ve 5 bayt içeren almak olacaktır. Yığın bellek, yeni bir bayt dizisi oluşturmak için sadece bunu yapmak istemiyorum. Şimdi aşağıdaki kodu var:
doSomethingWithTwoBytes(byte[] twoByteArray);
void someMethod(byte[] bigArray)
{
byte[] x = {bigArray[4], bigArray[5]};
doSomethingWithTwoBytes(x);
}
Eğer sadece 4 ofset nerede doSomething(bigArray.getSubArray(4, 2))
yapmak için bir yolu varsa bilmek isterim ve 2 uzunluğu, örneğin.
CEVAP
Yasal Uyarı: Bu soruya cevap verin kısıtlamaları uymuyor:
Yığın bellek, yeni bir bayt dizisi oluşturmak için sadece bunu yapmak istemiyorum.
(Dürüst olmak gerekirse, ben cevabımı silme layık olduğunu düşünüyorum. @Unique72 tarafından cevap doğru. IMA bu biraz oturup düzenlemek izin ve bu cevabı silmek edeceğim.)
Bilmiyorum, bir şekilde bunu yapmak için doğrudan diziler olmadan ek yığın ayırma, ama diğer cevapları kullanarak bir alt-liste sarıcı var ek tahsisat için sarıcı sadece – ama dizi ne kadar olabilir yararlı olması durumunda büyük bir dizi.
Bu, eğer bir kısaltma için arıyor, uygulama yöntemi Arrays.copyOfRange()
Java 6 tanıtıldı 2006? geç () olduğunu söyledi:
byte [] a = new byte [] {0, 1, 2, 3, 4, 5, 6, 7};
// get a[4], a[5]
byte [] subArray = Arrays.copyOfRange(a, 4, 6);