Arrays i Java

Arrays i Java

I Java er en matrise en viktig lineær datastruktur som lar oss lagre flere verdier av samme type.

  • Arrays i Java er objekter som alle andre objekter i Java-arrays implisitt arver fra klassen java.lang.Object. Dette lar deg påkalle metoder definert i Object (som toString() equals() og hashCode()).
  • Matriser har en innebygd lengdeegenskap som gir antall elementer i matrisen
Java
   public     class   Geeks     {      public     static     void     main  (  String  []     args  )      {      // initializing array      int  []     arr     =     {  40       55       63       17       22  };      // size of array      int     n     =     arr  .  length  ;      // traversing array      for     (  int     i     =     0  ;     i      <     n  ;     i  ++  )      System  .  out  .  print  (  arr  [  i  ]     +     ' '  );      }   }   

Produksjon
40 55 63 17 22  

Nøkkelfunksjoner i Arrays

  • Lagre primitiver og objekter: Java-arrayer kan inneholde både primitive typer (som int char boolean etc.) og objekter (som String Integer etc.)
  • Kontinuerlig minnetildeling Når vi bruker matriser av primitive typer, lagres elementene på sammenhengende steder. For ikke-primitive typer lagres referanser til elementer på sammenhengende steder.
  • Nullbasert indeksering: Det første elementet i matrisen er på indeks 0.
  • Fast lengde: Etter å ha opprettet en matrise er størrelsen fast; vi kan ikke endre det.
primitive_array_Primitiv Array-representasjon i Java update-array-elementIkke-primitiv Array-representasjon i Java

Grunnleggende operasjon på arrays i Java

1. Erklære en matrise

Den generelle formen for array-deklarasjon er 

// Metode 1:
int arr[];

// Metode 2:
int[] arr;

Elementtypen bestemmer datatypen for hvert element som består av matrisen. Som en rekke heltall kan vi også lage en rekke andre primitive datatyper som char float double etc. eller brukerdefinerte datatyper (objekter av en klasse).

Note: Det er bare hvordan vi kan lage en matrisevariabel ingen faktisk matrise eksisterer. Den forteller bare kompilatoren at denne variabelen (int Array) vil inneholde en matrise av heltallstypen.

2. Initialisering av en Array i Java

Når en matrise erklæres, opprettes bare en referanse til en matrise. Vi bruker ny for å tildele en matrise med gitt størrelse.

int arr[] = ny int[størrelse];

  • Array-deklarasjon er generelt statisk, men hvis størrelsen ikke er definert, er matrisen dynamisk størrelse.
  • Minne for arrays er alltid dynamisk allokert (på heap-segment) i Java. Dette er forskjellig fra C/C++ hvor minne enten kan være statisk allokert eller dynamisk allokert.
  • Elementene i matrisen tildelt av new vil automatisk initialiseres til null (for numeriske typer), false (for boolesk) eller null (for referansetyper).

Array Literal i Java

I en situasjon hvor størrelsen på matrisen og variablene til matrisen allerede er kjente matriseliteraler kan brukes. 

// Erklærer array literal
int[] arr = ny int[]{ 12345678910 };

  • Lengden på denne matrisen bestemmer lengden på den opprettede matrisen.
  • Det er ikke nødvendig å skrive den nye int[]-delen i de nyeste versjonene av Java.

3. Endre et matriseelement

For å endre et element, tilordne en ny verdi til en bestemt indeks. Indeksen begynner med 0 og slutter på (total matrisestørrelse) -1.

travers-array

// Endre det første elementet til 90
arr[0] = 90;

4. Matriselengde

Vi kan få lengden på en matrise ved å bruke lengdeegenskapen:

// Henter lengden på matrisen
int n = arr.lengde;

5. Tilgang og oppdatering av alle matriseelementer

  • Alle elementene i array kan nås ved å bruke Java for Loop.
  • Hvert element i matrisen er tilgjengelig via sin indeks.
ProduksjonTilgang til og oppdatering av alle matriseelementer

Java-program for å illustrere å lage en matrise med heltall setter noen verdier i matrisen og skriver ut hver verdi til standardutdata

Java
   class   Geeks     {      public     static     void     main  (  String  []     args  )      {      // declares an Array of integers.      int  []     arr  ;      // allocating memory for 5 integers.      arr     =     new     int  [  5  ]  ;      // initialize the elements of the array      // first to last(fifth) element      arr  [  0  ]     =     2  ;      arr  [  1  ]     =     4  ;      arr  [  2  ]     =     8  ;      arr  [  3  ]     =     12  ;      arr  [  4  ]     =     16  ;      // accessing the elements of the specified array      for     (  int     i     =     0  ;     i      <     arr  .  length  ;     i  ++  )      System  .  out  .  println  (  'Element at index '     +      i     +     ' : '     +     arr  [  i  ]  );      }   }   

Produksjon
Element at index 0 : 2 Element at index 1 : 4 Element at index 2 : 8 Element at index 3 : 12 Element at index 4 : 16  

Arrays av objekter i Java

En rekke objekter opprettes som en rekke dataelementer av primitiv type

Eksempel : Her tar vi en elevklasse og lager en array av Student med fem Student-objekter lagret i arrayet. Student-objektene må instansieres ved å bruke konstruktøren til Student-klassen, og referansene deres skal tilordnes array-elementene.

Java
   class   Student     {      public     int     roll_no  ;      public     String     name  ;          Student  (  int     roll_no       String     name  ){      this  .  roll_no     =     roll_no  ;      this  .  name     =     name  ;      }   }   public     class   Geeks     {      public     static     void     main  (  String  []     args  ){          // declares an Array of Student      Student  []     arr  ;      // allocating memory for 5 objects of type Student.      arr     =     new     Student  [  5  ]  ;      // initialize the elements of the array      arr  [  0  ]     =     new     Student  (  1       'aman'  );      arr  [  1  ]     =     new     Student  (  2       'vaibhav'  );      arr  [  2  ]     =     new     Student  (  3       'shikar'  );      arr  [  3  ]     =     new     Student  (  4       'dharmesh'  );      arr  [  4  ]     =     new     Student  (  5       'mohit'  );      // accessing the elements of the specified array      for     (  int     i     =     0  ;     i      <     arr  .  length  ;     i  ++  )      System  .  out  .  println  (  'Element at '     +     i     +     ' : { '      +     arr  [  i  ]  .  roll_no     +     ' '      +     arr  [  i  ]  .  name  +  ' }'  );      }   }   

Produksjon
Element at 0 : { 1 aman } Element at 1 : { 2 vaibhav } Element at 2 : { 3 shikar } Element at 3 : { 4 dharmesh } Element at 4 : { 5 mohit }  

Hva skjer hvis vi prøver å få tilgang til elementer utenfor matrisestørrelsen?

JVM kaster ArrayIndexOutOfBoundsException for å indikere at arrayen har blitt åpnet med en ulovlig indeks. Indeksen er enten negativ eller større enn eller lik størrelsen på en matrise.

Koden nedenfor viser hva som skjer hvis vi prøver å få tilgang til elementer utenfor matrisestørrelsen:

Java
   public     class   Geeks     {      public     static     void     main  (  String  []     args  )      {      int  []     arr     =     new     int  [  4  ]  ;      arr  [  0  ]     =     10  ;      arr  [  1  ]     =     20  ;      arr  [  2  ]     =     30  ;      arr  [  3  ]     =     40  ;      System  .  out  .  println  (      'Trying to access element outside the size of array'  );      System  .  out  .  println  (  arr  [  5  ]  );      }   }   

Produksjon:

Utdata av elementer utenfor matrisestørrelsen

Overføring av matriser til metoder

I likhet med variabler kan vi også overføre matriser til metoder. For eksempel overfører programmet nedenfor matrisen til metodesum for å beregne summen av matrisens verdier.

Eksempel:

Java
   public     class   Geeks     {      // Driver method      public     static     void     main  (  String     args  []  )      {      int     arr  []     =     {     3       1       2       5       4     };      // passing array to method m1      sum  (  arr  );      }      public     static     void     sum  (  int  []     arr  )      {      // getting sum of array values      int     sum     =     0  ;      for     (  int     i     =     0  ;     i      <     arr  .  length  ;     i  ++  )      sum     +=     arr  [  i  ]  ;      System  .  out  .  println  (  'sum of array values : '     +     sum  );      }   }   

Produksjon
sum of array values : 15  

Forklaring

  • Dette Java-programmet viser hvordan du overfører en matrise til en metode.
  • En heltallsmatrise arr er deklarert og initialisert i hovedmetoden.
  • Sum()-metoden kalles med arr som argument.
  • Inne i sum()-metoden legges alle array-elementer til ved å bruke en for-løkke.
  • Den endelige summen skrives deretter ut til konsollen.

Returner matriser fra metoder

Som vanlig kan en metode også returnere en matrise. For eksempel returnerer programmet nedenfor en matrise fra metode m1. 

Eksempel:

Java
   class   Geeks     {      // Driver method      public     static     void     main  (  String     args  []  )      {      int     arr  []     =     m1  ();      for     (  int     i     =     0  ;     i      <     arr  .  length  ;     i  ++  )      System  .  out  .  print  (  arr  [  i  ]     +     ' '  );      }      public     static     int  []     m1  ()      {      // returning array      return     new     int  []     {     1       2       3     };      }   }   

Produksjon
1 2 3  

Fordeler med Java Arrays

  • Effektiv tilgang: Å få tilgang til et element ved dets indeks er raskt og har konstant tidskompleksitet O(1).
  • Minnehåndtering: Arrays har fast størrelse som gjør minneadministrasjon enkel og forutsigbar.
  • Dataorganisasjon: Matriser hjelper til med å organisere data på en strukturert måte som gjør det enklere å administrere relaterte elementer.

Ulemper med Java Arrays

  • Fast størrelse: Når en matrise er opprettet, kan ikke størrelsen endres, noe som kan føre til minnesløsing hvis størrelsen er overvurdert eller utilstrekkelig lagring hvis den undervurderes.
  • Type Homogenitet: Matriser kan bare lagre elementer av samme datatype som kan kreve ytterligere håndtering for blandede typer data.
  • Innsetting og sletting: Å sette inn eller slette elementer, spesielt midt i en matrise, kan være kostbart da det kan kreve skiftende elementer.

Relaterte innlegg

  • Jagged Array i Java
  • For hver sløyfe i Java
  • Arrays-klassen i Java