dnarod
14-03-2007, 23:07
spiego meglio: mi trovo a dover lavorare coi bit in java, e cascasse il mondo ci devo riuscire...in pratica devo generare il codice di huffman per ogni carattere di una determinata sequenza...inizio col dire cio che faccio: leggo un file e metto le rispettive frequenze dei caratteri i un array di interi (dimensione-> caratteri ascii per esempio)...poi sbatto tutto dentro una coda con priorita che realizzo con un heap binario...dopodiche, visito in preordine l heap e quello che mi manca è l ultimo passo! devo infilare, per ogni carattere, una sequenza di bit che lo caratterizzino...
l algoritmo di per se è una baggianata, l ho fatto in 5 minuti, ma poi mi sono reso conto che invece dei bit stavo pushando dei caratteri '0' o '1' in degli stringbuffer per ogni elemento del mio alfabeto...e questo puo non essere male per fini didattici, ma lo è se si pensa che sta roba ha la pretesa di comprimere (per esempio un testo) quando in realta aumenta lo spazio...
la soluzione? usare i bit, ok....ma ho dato un occhiata alle api e ho trovato solo una scialbissima bitset e non so come e se sia possibile servirmene...il numero di bit che caratterizza ogni singolo elemento del mio alfabeto è varibile, quindi vorrei una struttura che mi dia la possibilita di esprimere sto fatto...
avendo letto da qualche parte che i boolean pigliano 1 bit, ho pensato a una cosa lercia e credo bruttissima: un array di arrayList (mamma mia mi faccio cagare da solo) con dentro un po di booleani quando servono...
e finalmente la domanda: tolto che voglio farlo cosi (e non con altri linguaggi o con altri metodi) perche sono il solito testardo, è possibile avere in grazia i bit in java con qualche classetta magica? ovvero, c e una soluzione piu indolore e meno sporca, se non quasi pulita?
grazie in anticipo per il mal di testa
l algoritmo di per se è una baggianata, l ho fatto in 5 minuti, ma poi mi sono reso conto che invece dei bit stavo pushando dei caratteri '0' o '1' in degli stringbuffer per ogni elemento del mio alfabeto...e questo puo non essere male per fini didattici, ma lo è se si pensa che sta roba ha la pretesa di comprimere (per esempio un testo) quando in realta aumenta lo spazio...
la soluzione? usare i bit, ok....ma ho dato un occhiata alle api e ho trovato solo una scialbissima bitset e non so come e se sia possibile servirmene...il numero di bit che caratterizza ogni singolo elemento del mio alfabeto è varibile, quindi vorrei una struttura che mi dia la possibilita di esprimere sto fatto...
avendo letto da qualche parte che i boolean pigliano 1 bit, ho pensato a una cosa lercia e credo bruttissima: un array di arrayList (mamma mia mi faccio cagare da solo) con dentro un po di booleani quando servono...
e finalmente la domanda: tolto che voglio farlo cosi (e non con altri linguaggi o con altri metodi) perche sono il solito testardo, è possibile avere in grazia i bit in java con qualche classetta magica? ovvero, c e una soluzione piu indolore e meno sporca, se non quasi pulita?
grazie in anticipo per il mal di testa