Java - tablice

Java zapewnia strukturę danych, rozszerzenie array, który przechowuje sekwencyjną kolekcję elementów tego samego typu o stałym rozmiarze. Tablica jest używana do przechowywania zbioru danych, ale często bardziej przydatne jest myślenie o tablicy jako o zbiorze zmiennych tego samego typu.

Zamiast deklarować pojedyncze zmienne, takie jak liczba0, liczba1, ... i liczba99, deklarujesz jedną zmienną tablicową, taką jak liczby, i używasz liczb [0], liczb [1] i ..., liczb [99] do reprezentowania indywidualne zmienne.

W tym samouczku przedstawiono, jak deklarować zmienne tablicowe, tworzyć tablice i przetwarzać tablice przy użyciu zmiennych indeksowanych.

Deklarowanie zmiennych tablicowych

Aby użyć tablicy w programie, należy zadeklarować zmienną odwołującą się do tablicy i określić typ tablicy, do której zmienna może się odwoływać. Oto składnia deklarowania zmiennej tablicowej -

Składnia

dataType[] arrayRefVar;   // preferred way.
or
dataType arrayRefVar[];  // works but not preferred way.

Note - Styl dataType[] arrayRefVarjest preferowany. StyldataType arrayRefVar[] pochodzi z języka C / C ++ i został zaadaptowany w Javie, aby pomieścić programistów C / C ++.

Przykład

Poniższe fragmenty kodu są przykładami tej składni -

double[] myList;   // preferred way.
or
double myList[];   // works but not preferred way.

Tworzenie tablic

Możesz utworzyć tablicę, używając operatora new o następującej składni -

Składnia

arrayRefVar = new dataType[arraySize];

Powyższe stwierdzenie ma dwie rzeczy -

  • Tworzy tablicę przy użyciu nowego typu dataType [arraySize].

  • Przypisuje odniesienie do nowo utworzonej tablicy do zmiennej arrayRefVar.

Zadeklarowanie zmiennej tablicowej, utworzenie tablicy i przypisanie odwołania tablicy do zmiennej można połączyć w jednej instrukcji, jak pokazano poniżej -

dataType[] arrayRefVar = new dataType[arraySize];

Alternatywnie możesz utworzyć tablice w następujący sposób -

dataType[] arrayRefVar = {value0, value1, ..., valuek};

Dostęp do elementów tablicy uzyskuje się za pośrednictwem index. Indeksy tablicowe są oparte na 0; to znaczy, zaczynają się od 0 doarrayRefVar.length-1.

Przykład

Poniższa instrukcja deklaruje zmienną tablicową myList, tworzy tablicę 10 elementów typu double i przypisuje jej odwołanie do myList -

double[] myList = new double[10];

Poniższy rysunek przedstawia tablicę myList. Tutaj myList zawiera dziesięć podwójnych wartości, a indeksy wynoszą od 0 do 9.

Przetwarzanie tablic

Podczas przetwarzania elementów tablic często używamy obu for pętla lub foreach pętli, ponieważ wszystkie elementy w tablicy są tego samego typu i znany jest rozmiar tablicy.

Przykład

Oto kompletny przykład pokazujący, jak tworzyć, inicjować i przetwarzać tablice -

public class TestArray {

   public static void main(String[] args) {
      double[] myList = {1.9, 2.9, 3.4, 3.5};

      // Print all the array elements
      for (int i = 0; i < myList.length; i++) {
         System.out.println(myList[i] + " ");
      }
     
      // Summing all elements
      double total = 0;
      for (int i = 0; i < myList.length; i++) {
         total += myList[i];
      }
      System.out.println("Total is " + total);
      
      // Finding the largest element
      double max = myList[0];
      for (int i = 1; i < myList.length; i++) {
         if (myList[i] > max) max = myList[i];
      }
      System.out.println("Max is " + max);  
   }
}

To da następujący wynik -

Wynik

1.9
2.9
3.4
3.5
Total is 11.7
Max is 3.5

Pętle foreach

W JDK 1.5 wprowadzono nową pętlę for, znaną jako pętla foreach lub ulepszona pętla for, która umożliwia sekwencyjne przechodzenie przez całą tablicę bez użycia zmiennej indeksu.

Przykład

Poniższy kod wyświetla wszystkie elementy w tablicy myList -

public class TestArray {

   public static void main(String[] args) {
      double[] myList = {1.9, 2.9, 3.4, 3.5};

      // Print all the array elements
      for (double element: myList) {
         System.out.println(element);
      }
   }
}

To da następujący wynik -

Wynik

1.9
2.9
3.4
3.5

Przekazywanie tablic do metod

Tak jak możesz przekazywać wartości typu pierwotnego do metod, możesz również przekazywać tablice do metod. Na przykład poniższa metoda wyświetla elementy w plikuint tablica -

Przykład

public static void printArray(int[] array) {
   for (int i = 0; i < array.length; i++) {
      System.out.print(array[i] + " ");
   }
}

Możesz go wywołać, przekazując tablicę. Na przykład poniższa instrukcja wywołuje metodę printArray w celu wyświetlenia 3, 1, 2, 6, 4 i 2 -

Przykład

printArray(new int[]{3, 1, 2, 6, 4, 2});

Zwracanie tablicy z metody

Metoda może również zwrócić tablicę. Na przykład poniższa metoda zwraca tablicę będącą odwróceniem innej tablicy -

Przykład

public static int[] reverse(int[] list) {
   int[] result = new int[list.length];

   for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {
      result[j] = list[i];
   }
   return result;
}

Klasa Arrays

Klasa java.util.Arrays zawiera różne statyczne metody sortowania i wyszukiwania tablic, porównywania tablic i wypełniania elementów tablic. Te metody są przeciążone dla wszystkich typów pierwotnych.

Sr.No. Metoda i opis
1

public static int binarySearch(Object[] a, Object key)

Przeszukuje określoną tablicę Object (Byte, Int, double itp.) Pod kątem określonej wartości przy użyciu algorytmu wyszukiwania binarnego. Tablicę należy posortować przed wykonaniem tego wywołania. Zwraca indeks klucza wyszukiwania, jeśli znajduje się na liście; w przeciwnym razie zwraca (- (punkt wstawienia + 1)).

2

public static boolean equals(long[] a, long[] a2)

Zwraca wartość true, jeśli dwie określone tablice longs są sobie równe. Dwie tablice są uważane za równe, jeśli obie tablice zawierają tę samą liczbę elementów, a wszystkie odpowiadające im pary elementów w dwóch tablicach są równe. Zwraca to prawdę, jeśli dwie tablice są równe. Ta sama metoda może być używana przez wszystkie inne pierwotne typy danych (Byte, short, Int itp.)

3

public static void fill(int[] a, int val)

Przypisuje określoną wartość int do każdego elementu określonej tablicy ints. Ta sama metoda może być używana przez wszystkie inne pierwotne typy danych (Byte, short, Int itp.)

4

public static void sort(Object[] a)

Sortuje określoną tablicę obiektów w kolejności rosnącej, zgodnie z naturalną kolejnością jej elementów. Ta sama metoda może być używana przez wszystkie inne pierwotne typy danych (Byte, short, Int itp.)