Ohjelmani saa aina satunnaisessä järjestyksessä olevan Point-taulukon.
Tarkoituksena on parsia taulukon "ulkoreunat" ja luoda niistä sitten Polygon-objekti. Eli jos nuo alussa olevat pisteet tulostaisi niin näyttäisi tältä:
###### ########### ############# ############## ################# ################
Ja jos parsitut pisteet tulostaisi:
# # # # # # # # # # # #
Osaisin luoda itse lopullisista pisteisä kyllä Polygonin mutta onko kellään antaa ideaa kuinka nuo pisteet voisi parsia?
Otat vaikka tuon datan rivi kerrallaan käsittelyyn ja haet ne reunat String.indexOf('#') ja String.lastIndexOf('#') -metodeilla.
http://download.oracle.com/javase/6/docs/api/
Ohjelmassani on kyseinen pätkä:
ArrayList<Point> points = new ArrayList<Point>();
Kuinka saisin rivitettyä tuon listan niin että ylimmällä rivillä olisi pienimmän y arvon omaavat pisteet ja myös niin että x arvotkin ovat järjestyksessä pienimmästä suurimpaan? Tarvitsenko HashMappia vai mitä?
Voit käyttää seuraavanlaista algoritmia:
jokaiselle pisteelle P
jos rivin P.y tiedot puuttuvat
pienin rivillä P.y on P.x
suurin rivillä P.y on P.x
muuten
jos P.x < pienin rivillä P.y
pienin rivillä P.y on P.x
jos P.x > suurin rivillä P.y
suurin rivillä P.y on P.xPienimmät ja suurimmat arvot voi tallentaa omiin HashMap-olioihinsa.
Toinen vaihtoehto on toteuttaa Comparator-luokka, joka järjestää pisteet ensisijaisesti y-koordinaatin mukaan ja toissijaisesti x-koordinaatin mukaan. Sitten listan voi järjestää (Collections.sort), minkä jälkeen kunkin rivin ensimmäinen ja viimeinen x-koordinaatti on helppo hakea järjestyksessä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.