Vad är Dynamic Array i Java?



Den dynamiska matrisen i Java är en typ av en matris med en enorm förbättring för automatisk storleksändring. Den enda begränsningen för matriser är att den har en fast storlek.

Arrayer i är homogena datastrukturer implementerade i Java som objekt. Arrayer lagrar ett eller flera värden av en specifik datatyp och ger indexerad åtkomst för att lagra samma. Ett specifikt element i en matris nås genom dess index. I den här artikeln kommer vi att diskutera Dynamic Array i Java i följande sekvens:

Introduktion till Dynamic Array i Java

Den dynamiska matrisen är en sådan typ av en matris med en enorm förbättring för automatisk storleksändring. Den enda begränsningen för matriser är att den har en fast storlek. Detta översätts till en mening att du bara kan ange antalet element som din matris kan innehålla i förväg. Å andra sidan kan de dynamiska matriserna expandera när vi lägger till fler element i realtid. Därför behöver inte kodaren bestämma storleken på matrisen i förväg. Det har också några fler styrkor:





  • Snabbsökning . Samma som precis som matriser tar O (1) tid när elementet hämtas vid ett visst index.



  • Variabel storlek . Vi kan infoga så många element som vi vill och en dynamisk matris kommer därför att expandera för att hålla dem.

  • Cachevänligt . I likhet med matriser kan dynamiska matriser placera objekt bredvid varandra i minnet, vilket på ett effektivt sätt utnyttjar cacheminnet.



Det finns några nackdelar med att använda dynamiska matriser i vår kod. Även om vi använder dynamiska matriser mer än någonting i de flesta applikationer, finns det vissa fall där de inte blir det mest föredragna valet på grund av dess begränsningar.

  • Långsamma värsta fall lägger till . Normalt, medan tillägget av ett nytt element i slutet av en dynamisk matris tar det O (1) vid en instans. Men om den dynamiska matrisen inte har fler index för ett nytt objekt måste den expanderas, vilket tar O (n) åt gången.

  • Dyr inlägg och raderar. På samma sätt som matriser lagras elementen intill varandra. Så när du lägger till eller tar bort ett objekt i mitten av en matris kräver det att du trycker på andra element, vilket tar O (n) åt gången.

Nedanstående diagram visar hur matriserna fungerar i realtid och visar hur elementen staplas upp. Det visar också hur instruktionerna ändras för ett genomsnittligt fall och i värsta fall av arrayfunktioner.

array - dynamisk array i java - edureka

binär till decimal i Java

Storlek kontra kapacitet

När vi initialiserar en dynamisk matris skapar den dynamiska matrisimplementeringen en förståelig matris med fast storlek. Den ursprungliga storleken motsvarar implementeringen. Låt oss till exempel göra vårt implementeringsarrangemang för att använda 10 index. Nu lägger vi till fyra objekt i vår dynamiska array. Nu har vår dynamiska array en längd på fyra. Vår underliggande array har emellertid en längd på 10. Därför kan vi säga att dynamisk arraystorlek är fyra och dess kapacitet är 10. En dynamisk array lagrar ett specifikt slutindex för att hålla reda på slutpunkten för den dynamiska arrayen och startpunkten punkt där den extra kapaciteten börjar.

Fördubbling tillhör

Det kan finnas fall där vi försöker lägga till ett objekt i en array där kapaciteten redan är full. Därför skapar du automatiskt nya, större och underliggande matriser för att skapa rumsdynamiska matriser. Vanligtvis blir det dubbelt så stort att hantera eventuella nya tillägg, som det inte förutsåg tidigare. Det tar därför ingen tid att kopiera varje artikel. När du lägger till ett objekt i vår dynamiska array skapas automatiskt en ny underliggande array i dubbel storlek, som inte tar någon tid.

Ta bort ett element

När du tar bort ett element från en matris tar standardmetoden 'remove ()' bort ett element från slutet och lagrar automatiskt noll vid det senaste indexet. Det kommer också att ta bort element i ett specifikt index genom att anropa removeAt (i) -metoden där ”I” är index. Metoden removeAt (i) flyttar alla rätt element på vänster sida från det angivna indexet.

Ändra storlek på en matris

När matriser saknar data på högra sidan av matrisen som tar onödigt minne, frigör metoden srinkSize () extra minne. När alla platser förbrukas och ytterligare element läggs till måste den underliggande arrayen med fast storlek öka storleken. Den faktiska storleksändringen är dyr, eftersom vi måste tilldela en större array och kopiera alla element från en array som du har bevuxit innan den äntligen kan lägga till ett nytt objekt.

Nedan följer ett exempel på ett program där matrisstorleken blir full och nya element kopieras till en ny matris med dubbel storlek. Elementet som är ett strängelement som kallas ”Mahavir” är ett tillägg till det redan fullständiga utbudet av storlek 3.

importera java.util.ArrayList importera java.util.Arrays importera java.util.Scanner public class AddingItemsDynamically {public static void main (String args []) {Scanner sc = new Scanner (System.in) System.out.println (' Ange storleken på matrisen :: ') int storlek = sc.nextInt () Sträng myArray [] = ny Sträng [storlek] System.out.println (' Ange element i matrisen (Strängar) :: ') för (int i = 0 i

Produktion:

c ++ sorteringsmatris

Med detta kommer vi till slutet av Dynamic Array i Java-artikeln. Jag hoppas att du fick en uppfattning om hur du arbetar med dynamiska matriser.

Kolla in av Edureka, ett pålitligt inlärningsföretag online med ett nätverk av mer än 250 000 nöjda elever spridda över hela världen. Edurekas Java J2EE- och SOA-utbildning och certifieringskurs är utformad för studenter och yrkesverksamma som vill vara Java-utvecklare. Kursen är utformad för att ge dig ett försprång till Java-programmering och träna dig för både kärn- och avancerade Java-koncept tillsammans med olika Java-ramverk som Hibernate & Spring.

Har du en fråga till oss? Vänligen nämna det i kommentarsektionen i denna 'Dynamic Array in Java' -blogg så återkommer vi så snart som möjligt.