lunedì 5 novembre 2012

Array a dimensione variabile in Android

Uno degli aspetti piu' divertenti dei linguaggi di programmazionee evoluti e' la possibilita' di gestire degli array a dimensione non predefinita (a partire dalla STL di C++)

In Java ed Android vi sono ben due possibilita' date dal formato Vector ed ArrayList

Nei due esempi gli array vengono popolati con i valori della funzione Seno.
Dal punto di vista operativo le differenze sono veramente minime.
  1. i metodi del Vector sono sincroni mentre gli ArrayList non sono sincroni
  2. i Vector sono thread-safe ma sono piu' lenti nell'aumentare le dimensioni
  3. ad ogni add Vector raddoppia le dimensioni disponibili mentre ArrayList aumenta le dimensioni di meta' della propria dimensione

Vettore
-------------------------------------------------------
v = new Vector<Float>();
for (int t=0;t<360;t++)
        {
            v.add((float) Math.sin(Math.toRadians(t)));
        }
int length = v.size();
Log.d("lenght_t", Integer.toString(length));

-------------------------------------------------------
ArrayList
-------------------------------------------------------
al = new ArrayList<Float>();
for (int s=0;s<360;s++)
        {
            al.add((float) Math.sin(Math.toRadians(s)));
        }
length_s = al.size();
Log.d("length_s", Integer.toString(length_s));
Iterator<Float> it = al.iterator();
    while (it.hasNext()) {
            System.out.println("Data is "+ it.next());
    }

-------------------------------------------------------