CodeGym/Java Blogu/Rastgele/Java'da Bir Diziye Yeni Bir Öğe Nasıl Eklenir
John Squirrels
Seviye
San Francisco

Java'da Bir Diziye Yeni Bir Öğe Nasıl Eklenir

grupta yayınlandı
Oh, Java dizileri. Yüzlerce acemi yazılım geliştiricisinin yoğun sevgi ve nefretinin nesnesidirler. Başlatılmış bir diziye eleman eklemek imkansız dediler… Aslında mümkün ama klasik anlamda değil… ve pek de uygun değil. Halihazırda başlatılmış bir diziye yeni öğeler eklemek bir tür hiledir. Ancak, bu hileler bir röportajda ve bazen de bir programcının işinde işe yarayabilir. Veri tipini kullanmaktan zevk almanızı ve bunu verimli bir şekilde nasıl yapacağınızı bilmenizi sağlamak için Java dizisine yeni bir öğe ekleme hakkında bir kılavuz yazdık. Teori ve kod örneklerini dikkatlice incelemenin dışında, gönderide yer alan uygulama problemlerini kontrol ettiğinizden ve tamamladığınızdan emin olun. Java'da Bir Diziye Yeni Bir Öğe Nasıl Eklenir - 1

Java'da Dizi Nedir?

Dizinin ne olduğunu ve Java'da nasıl oluşturulacağını hatırlayalım. Bunu hatırlarsanız, bir sonraki "Java Dizilerine Yeni Öğeler Eklemenin 5 Yolu" alt başlığına atlayabilirsiniz. Oracle'ın resmi Java belgeleri, dizilerin aynı veri türüne ait bir dizi değer olduğunu söylüyor. Bir tamsayı kümesi, Java'daki bir dizinin mükemmel bir örneğidir . Tanımladığınız tüm değerlerin, dizin adı verilen dizi içinde belirli bir konumu vardır . Dizileri bildirmenin ve başlatmanın yolları şunlardır:
int[] myArray = new int[10];
int[] myArray1 = {1, 0, 3, 17, 5, 6, 7, 8, 9, 10}
İlk durumda, bir myArray dizisi tanımladık ve Java'yı 10 öğelik bir diziye yer ayırmasını sağladık, ikinci myArray1'de , hemen içine 10 değer girdik. Her iki durumda da, 11. öğe basitçe diziye itilemez. Dizilerle işlem gerçekleştirmek için, geliştiriciler bir dizinin içerdiği değerlerin indekslerini değiştirir. Ne yapmalıyız? Diziye eklemenin en yaygın yollarına bir göz atalım.

Java Dizilerine Yeni Öğeler Eklemenin 5 Yolu

Pekala, işte değişmezi değişken göstermek için püf noktalarımız.
  • Diziyi Listeye Dönüştür
  • Daha büyük kapasiteli yeni bir dizi oluşturun ve diziye yeni bir öğe ekleyin
  • System.arraycopy()' yi uygulama
  • Apache Commons kullanarak dizileri kopyalama
  • ArrayCopyOf() yöntemini uygulama
Bir diziye öğe eklemenin bu yollarına daha yakından bakalım.

1. Bir Diziyi Listeye Dönüştürme

Bir diziye doğrudan yeni bir öğe ekleyemediğimiz için yapılacak en iyi şey, bunları listelere dönüştürmek, yeni öğeler eklemek ve değerleri tekrar dizilere dönüştürmektir. Bir diziyi listeye dönüştürmenin ilk yolu , yeni bir ArrayList oluşturmak için asList() işlevini kullanmaktır . Değer aralığı başarıyla dönüştürüldükten sonra, değeri eklemek için ListAdd()' i kullanın. Artık bir diziyi düzenlemeniz gerekmediğinde, toArray() yönteminin yardımıyla orijinal veri türüne geri dönün . Tüm yöntemler ve dönüşümlerle, bu ilk başta kafa karıştırıcı görünebilir. İşleri temizlemek için asList() kullanma örneğine bir göz atalım .
// Code for adding Java arrays to a program
import java.lang.*;
import java.util.*;

class ArrayDemo{
   //Let’s add a new element to an array
   public static Integer[] addX(Integer myArray[], int x) {
       int i;
       //turn array into ArrayList using asList() method
       List arrList = new ArrayList( Arrays.asList(myArray));

       // adding a new element to the array
       arrList.add(x);

       // Transforming the ArrayList into an array
       myArray = arrList.toArray(myArray);
       return myArray;
   }
   public static void main(String[] args) {
       int i;
       //initial array
       Integer myArray[] = { 0, 1, 2, 45, 7, 5, 17};

       //print the initial array out
       System.out.println("Initial Array: "
                          + Arrays.toString(myArray));

       //element to be added
       int x = 28;

       // call the method to add x in myArray
       myArray = addX(myArray, x);

       // print the updated array out
       System.out.println("Array with " + x + " added: "
                          + Arrays.toString(myArray));
   }
}
Çıktı:
İlk Dizi: [0, 1, 2, 45, 7, 5, 17] 28'li dizi eklendi: [0, 1, 2, 45, 7, 5, 17, 28]
Böylece, programda başarılı bir şekilde 7 değerden oluşan myArray dizisini oluşturduk , doldurduk ve çıktısını aldık. Sonra on değerin bizim için yeterli olmadığına karar verdik. Arrays.asList yöntemini kullanarak myArray'i bir ArrayList arrList'e dönüştürdük . İşte 28, eklenecek eleman. Bunu ArrayList arrList'e ekledik ve ardından toArray() yöntemini kullanarak tekrar bir diziye dönüştürdük ve yeni diziyi yazdırdık.

2. Daha büyük kapasiteli yeni bir dizi oluşturun

Bir diziye daha fazla öğe eklemenin en yaygın yollarından biri sıfırdan yeni, daha büyük bir dizi oluşturmak, eski öğelerin öğelerini koymak ve yeni öğeler eklemektir. İşte sürecin adım adım izlenecek yolu:
  • a+n kapasiteli yeni bir dizi oluşturun (a — orijinal dizi kapasitesi, n — eklemek istediğiniz öğe sayısı).
  • Önceki veri aralığının tüm öğelerini ve yeni değerleri yenisine ekleyin.
  • Ortaya çıkan diziyi yazdırın.
Kendi başınıza böyle bir dizi oluşturmayı deneyin ve kodunuzu aşağıdaki örnektekiyle karşılaştırın:
// Java Program to add an element in an Array

import java.lang.*;
import java.util.*;

class ArrayDemo {
   //Method to add an element x into array myArray
   public static int[] addX(int myArray[], int x) {
       int i;

       // create a new array of a bigger size (+ one element)
       int newArray[] = new int[myArray.length + 1];

       // insert the elements from the old array into the new one
       for (i = 0; i < myArray.length; i++)
           newArray[i] = myArray[i];

       newArray[myArray.length] = x;
       return newArray;
   }

   public static void main(String[] args) {
       int i;

       // initial array of size 10
       int arr[]
               = {0, 1, 2, 45, 7, 5, 17};

       // print the initial array
       System.out.println("Initial Array: " + Arrays.toString(arr));

       // element to be added
       int x = 28;

       // call the addX method to add x in arr
       arr = addX(arr, x);
       // print the updated array
       System.out.println("Array with " + x + " added:" + Arrays.toString(arr));
   }
}
Çıktı:
Başlangıç ​​Dizisi: [0, 1, 2, 45, 7, 5, 17] 28'li dizi eklendi:[0, 1, 2, 45, 7, 5, 17, 28]
Bir diziye yeni bir öğe eklemek bu şekilde en kolay olanıdır.

3. System.arrayCopy() öğesinin uygulanması

System.arrayCopy(), bir kaynak dizinin hedefinde daha büyük bir dizi tahsis etmek için yaygın olarak kullanılan bir yöntemdir. Bir geliştirici, yöntemin köşeli parantezleri içinde yeni bir diziye kopyalamak istediği diziyi belirtebilir. Yöntemin nasıl çalıştığını görmek ve kendiniz kullanmayı denemek için aşağıdaki örneğe bir göz atın ve çalıştırmayı deneyin:
import java.util.Arrays;

class ArrayDemo {
   private static Integer[] addElement(Integer[] myArray, int newElement) {
       //we create a new Object here, an array of bigger capacity
       Integer[] array = new Integer[myArray.length + 1];
       System.arraycopy(myArray, 0, array, 0, myArray.length);
       array[myArray.length] = newElement;
       return array;
   }

   public static void main(String[] args) {
       Integer[] myArray = {20, 21, 3, 4, 5, 88};
       System.out.println("myArray before adding a new element: " + Arrays.toString(myArray));
       myArray = addElement(myArray, 12);
       System.out.println("myArray before adding a new element: " + Arrays.toString(myArray));
   }
}
Çıktı:
myArray yeni eleman eklemeden önce: [20, 21, 3, 4, 5, 88] myArray yeni eleman eklemeden önce: [20, 21, 3, 4, 5, 88, 12]
Burada bir myArray dizisi oluşturduk , çıktısını aldık ve System.arrayCopy() üzerine kurulu addElement yöntemimizi kullanarak yeni bir öğe ekledik .

4. Dizileri kopyalamak için Apache Commons'ı kullanma

Standart olmayan bir yol kullanalım. Yani, üçüncü taraf bir kitaplık olan Apache Commons lang. Yeniden kullanılabilir Java bileşenlerinin tüm yönlerine odaklanan Apache Commons projesinin bir parçasıdır. Proje hakkında bilgi gereksiz olmayacaktır. Apache Commons dilinde, özellikle genişleyen dizilere izin vermek için tasarlanmış bir add() yöntemi vardır , kodlayıcılara çok fazla zaman ve emek kazandırır. Bu Apache Commons add() yönteminin , zorlu bir sınava veya mülakat sorusuna yanıt vermeniz gerekebileceği ihtimaline karşı System.arraycopy() yöntemini çağırmaya dayalı olduğunu akılda tutmakta fayda var . Kitaplıkları projenize eklemek için Apache Commons web sitesine gidin ve kitaplıkları indirin. Ardından Dosya → Proje Yapısı → Kitaplıklar > + seçeneğine gidin ve indirilen jar dosyalarını seçin.
import org.apache.commons.lang3.ArrayUtils;
import java.util.Arrays;

class ArrayDemo {
   private static <T> T[] append(T[] arr, T element) {
       return ArrayUtils.add(arr, element);
   }

   public static void main(String[] args) {
       Integer[] myArray = { 0, 1, 2, 3, 4};
       System.out.println("myArray: " + Arrays.toString(myArray));

       myArray = append(myArray, 5);
       System.out.println("new Array with the number added: " + Arrays.toString(myArray));
   }
}
Çıktı:
myArray: [0, 1, 2, 3, 4] eklenen sayı ile yeni Dizi: [0, 1, 2, 3, 4, 5]

5. ArrayCopyOf()'u Uygulamak

ArrayCopyOf(), bir diziye yeni bir öğe eklemek için bir yöntem daha. Apache Commons lang add() gibi, bu işlemi yapmak için dahili olarak System.arraycopy() öğesini çağırır . Ancak çoğu geliştirici, kodu kısa ve okunabilir tutmalarına izin verdiği için ArrayCopyOf()' u tercih eder. İşte bir diziye yeni öğeler eklemek için ArrayCopyOf() kullanmanın bir örneği :
import java.util.Arrays;
class ArrayDemo {
   private static <X> X[] addElement(X[] myArray, X element) {
       X[] array = Arrays.copyOf(myArray, myArray.length + 1);
       array[myArray.length] = element;
       return array;
   }
   public static void main(String[] args) {
       Integer[] myArray = {20, 21, 3, 4, 5, 88};
       System.out.println("myArray before adding a new element: " + Arrays.toString(myArray));
       myArray = addElement(myArray, 12);
       System.out.println("myArray before adding a new element: " + Arrays.toString(myArray));
   }
}
Çıktı:
myArray yeni eleman eklemeden önce: [20, 21, 3, 4, 5, 88] myArray yeni eleman eklemeden önce: [20, 21, 3, 4, 5, 88, 12]

Çözüm

Bir diziye öğelerin nasıl ekleneceğini bilmek, geliştiricilerin eski kodu işlevselliğinden ve okunabilirliğinden ödün vermeden hızlı bir şekilde güncellemesine yardımcı olur… Veya sadece röportajı geçmek için. Java dizilerine öğe eklemenin farklı yolları olduğundan, rahat olduğunuz yöntemi seçmekten çekinmeyin.
Yorumlar
  • Popüler
  • Yeni
  • Eskimiş
Yorum bırakmak için giriş yapmalısınız
Bu sayfada henüz yorum yok