Värien tilastointi

Minulla on ArrayListissä Color-objekteja. Onko jollakulla mitään ideaa siitäsaisin tilastoitua kunkin värin esiintyvyyden?
5516
Äänestä

Muut lukivat myös

Vastaukset 5

Vanhimmat

Eli HashMap. Jos väri ei löydy, sijoitetaan siihen 1. Muutoin lisätään. Ei pitäisi olla monimutkaista.

Suurilla kuvilla tämä voi viedä erittäin paljon muistia, ehkä noin 80 tavua jokaista erillaista väriä kohti. Color-luokka on vähintään 36 tavua, HashMap- entry 28 tavua (+ tyhjät solut taulukossa, HashMap yrittää muistaakseni pitää 50% käyttöastetta), Integer-objekti 16 tavua. Tavumäärät voivat heittää hieman, en laskenut niin tarkkaan, mutta lähellä niiden pitäisi olla. 64-bittisellä JVM:llä luultavasti lähemmäksi 120 tavua, näin hatusta heitettynä.

Jos värit ovat 8+8+8 bittisiä (sRGB yms. 24-bittiset) ja niitä on paljon, voi olla suorituskyvyn kannalta nopeampaa varata 2^24 taulukko int[256*256*"256] = 48 MB, jota indeksoidaan (red

Äänestä
  • Juu, täytynee tutkia. Viitsisitkö heittää vielä vähän koodia tuosta HashMapista?

    Äänestä

  • tilastoja kirjoitti:

    Juu, täytynee tutkia. Viitsisitkö heittää vielä vähän koodia tuosta HashMapista?

    Jos HashMap sisältää objektin Color, lisätään avaimeen yksi, mutta miten?

    Äänestä

  • tilastoja kirjoitti:

    Jos HashMap sisältää objektin Color, lisätään avaimeen yksi, mutta miten?

    muuttujassa varit on väri-objektit. Miten saan lisättyä Integeriin yhden? Vai pitäisikö koko Integer korvata jollain muulla? Ongelma siis on seuraavan ehtolauseen jälkeen: if (y.containsKey(varit.get(x)) . Miten tästä jatketaan.

    HashMap y = new HashMap();
    for (int x=0;x

    Äänestä

  • tilastoja kirjoitti:

    muuttujassa varit on väri-objektit. Miten saan lisättyä Integeriin yhden? Vai pitäisikö koko Integer korvata jollain muulla? Ongelma siis on seuraavan ehtolauseen jälkeen: if (y.containsKey(varit.get(x)) . Miten tästä jatketaan.

    HashMap y = new HashMap();
    for (int x=0;x

    Oho, koodi katkesi kesken edellisessä viestissä. Tuli mieleeni, että jos arvon kasvattamiseksi yhdellä ei käy muutoin, kun luomalla joka kerta uusi Integer-objekti, on tämä selvää muistin haaskaamista. Pakko löytää tehokkaampi keino.

    Äänestä

Kommentoi aloitusta


tilastoja kirjoitti:

Minulla on ArrayListissä Color-objekteja. Onko jollakulla mitään ideaa siitäsaisin tilastoitua kunkin värin esiintyvyyden?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu