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.x
Pienimmä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.