Java-kokoelmassa on TreeSet, TreeMap, mutta ei TreeList. Miksi niin?


Paras vastaus

Ajattele luettelon, kartan ja joukon eroja.

Kartta on rakenne, jonka avulla voit etsiä asioita avaimen avulla. Kun suunnittelet hakuja, huomaat, että avainten vertailuja on paljon ja hakujen on oltava nopeita. Puu nopeuttaa avainten vertailuprosessia järjestämällä avaimet haaroihin; tämä vähentää niiden avainten vertailujen määrää täytyy tehdä.

Sarjassa ei ole päällekkäisiä kohteita. Joten joka kerta kun lisäät kohteen, sinun on verrattava sitä olemassa oleviin kohteisiin nähdäkseen, onko se kopio. Nyt olet palannut samaan ongelmaan kuin Kartta, joten järjestät kohteesi puulla vertailun vähentämiseksi.

Luettelossa on vain järjestys, joten luettelo voidaan helposti suunnitella niin, että se ei ” Ei vaadita vertailuja, jotta saat seuraavan (tai mahdollisesti edellisen) kohteen luettelojärjestyksessä.

Joten vaikka puu voi auttaa sinua tekemään paremman kartan tai joukon, se ei todellakaan auta sinua tekemään parempaa luetteloa. .

Jos puhut lajitellusta luettelosta, jossa kohteet lisätään luetteloon lajittelujärjestyksessä, olet nyt palannut vertailuihin. lajittelua varten, joten puu voi auttaa lajitellun luettelon luomisessa.

Vastaus

No, luettelo on järjestetty kokoelma – mikä tarkoittaa, että sinulla on oltava kyky käyttää satunnaisesti i-elementtiä. Jos kokoelma sekoittaa elementit sisäisesti, lisäysjärjestys ei ole sama kuin sisäisen tietorakenteen elementtien järjestys. Joten et voi enää luottaa hakemistopohjaiseen pääsyyn. Sun ei siis toimittanut lajiteltua luetteloa tai TreeList-luokkaa. Voit saavuttaa saman asian käyttämällä Collections.sort (..)

Apache commons-Collections tarjoaa TreeList-luokan ( TreeList (Commons Collections 3.2.1 -sovellusliittymä) ), mutta se ei ole lajiteltu luettelo, ja sitä kutsutaan siksi, koska se käyttää puiden tietorakennetta elementtien sisäiseen tallentamiseen

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *