En vanlig feil gjort av nye programmerere er å lagre alle samlinger av data i enkle matriser . Mens den grunnleggende matrisen er en stor datastruktur , den har en rekke svakheter som kan unngås ved å bruke noen av de andre grunnleggende datastrukturer . Java Collections Framework inneholder et sett med lett-å- bruke grensesnitt og klasser som implementerer noen av de mest vanlige datastrukturer i informatikk. Basic Array
Det beste med en grunnleggende array i Java er at det kan leses fra og skrives til raskt. Men permanent legge til eller fjerne et element fra tabellen krever mye tid, fordi Java ikke støtter dynamiske matriser . Hver gang du endrer størrelsen på et array i Java , må du gjenoppbygge matrisen igjen fra grunnen av, ett element om gangen , med en løkke . Du kan unngå dette ved å alltid initialisering dine arrays til det maksimale størrelsen som kreves når som helst under kjøring, men som kan være en dramatisk sløsing med minne og er bare dårlig design generelt .
ArrayList
ArrayList-klassen fra java.util biblioteket løser noen av disse problemene ved å pakke et sett av manager funksjoner rundt en skjult array. Denne matrisen er strategisk økt og redusert i størrelse jevne mellomrom slik at i gjennomsnitt , legge til og fjerne elementer skjer svært raskt . Men av og til, har den skjulte , interne utvalg ganske enkelt å bli endret , og i slike tilfeller, vil operasjonen krever en mye større mengde tid .
LinkedList
< p> den LinkedList går lenger enn ArrayList og faktisk har ingen utvalg overhodet, skjult eller ikke . I stedet poster er tusenfryd lenket sammen i noder , med hver node som inneholder en referanse til minne adressen til den neste. Fordelen med en LinkedList er at å legge til eller fjerne nye biter av data alltid oppstår svært raskt tid, og det er aldri noen nedskalering av en matrise som skal utføres. Men det er umulig å få tilgang til data i midten av listen uten å gå gjennom hele listen fra forsiden eller baksiden , slik at tiden det tar å lese data fra midten av en LinkedList kan være betydelig.
ArrayList gjør at data hvor som helst innenfor det å få tilgang til svært raskt , og vanligvis kan endre størrelsen raskt , men noen ganger krever ekstra tid når den interne utvalg må gjenoppbygges . Den LinkedList kan alltid legge til og fjerne data fra listen svært raskt , men å hente data fra midten av listen kan være tidkrevende . Dette gjør LinkedList et godt valg for stabler og køer som bare vil nås helt foran eller bak , men ArrayList et bedre valg som en samlet erstatning for enkel rekke .
HashSet
HashSet , som både ArrayList og LinkedList , gjør at data kan legges til og fjernes veldig, veldig fort, og det har også en annen fordel : en HashSet kan søkes ekstremt raskt , raskere enn en arrays , ArrayLists eller LinkedLists . Den gjør dette ved å utføre en matematisk operasjon på et stykke av data for å bestemme sin indeks i en matrise, og deretter utføre den samme operasjonen på dataene som skal søkes for å få indeksen av dataene ønsket .
P Hvis som er forvirrende , ikke bekymre deg . Det viktige er at HashSets er stor for datasett som må søkes gjennom igjen og igjen. Men de har også en betydelig svakhet : en HashSet holder ikke rekkefølgen på dataene som er plassert inn i det, og rekkefølgen av elementene i settet kan endre seg fra det ene øyeblikket til det neste. For eksempel, i en enkel matrise , hvis et element er plassert ved indeks 0 , kan programmereren stole på det resterende ved indeks 0 alltid til hun forandrer det . Men i en HashSet , kan et element på indeks 0 i det ene øyeblikket godt være at indeksen 327 i neste øyeblikk .