Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Programmazione generica e tipi primitivi

    Sto studiando la programmazione generica e non mi è chiara una cosa:

    Se devo utilizzare una struttura dati che so andrà a contenere tipi primitivi, devo comunque usarla con l'autoboxing di questi tipi primitivi?

    Ad esempio, un vettore che conterra integer devo definirlo così?

    codice:
    Vector<Integer> pippo = new Vector();
    Oppure così?

    codice:
    Vector pippo = new Vector(); // (unsafe operation)
    E' evidente che funziona in entrambi i casi.

    Sono vettori che lavorano privatamente e ho la certezza che nessuno ci aggiungerà dati diversi da int.


    Quale scelta è preferibile? Utilizzando l'autoboxing ho un rallentamento del programma e uno spreco di memoria o è trascurabile anche su strutture dati molto grandi?

  2. #2
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Sei tu sappia di avere mai bisogno di compilare il codice con Java <1.5 direi di scegliere i generics, se no sarebbe meglio non usarli. Comunque, ci sarebbero anche i Joda Primitives.

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Programmazione generica e tipi primitivi

    Originariamente inviato da Iwk_Batterio
    codice:
    Vector<Integer> pippo = new Vector();
    Oppure così?

    codice:
    Vector pippo = new Vector(); // (unsafe operation)
    Vector<Integer> vec = new Vector<Integer>();

    Il tipo parametrico va specificato anche nella istanziazione per fare la cosa in modo corretto/completo.

    Originariamente inviato da Iwk_Batterio
    Quale scelta è preferibile? Utilizzando l'autoboxing ho un rallentamento del programma e uno spreco di memoria o è trascurabile anche su strutture dati molto grandi?
    Indubbiamente il passaggio da int -> Integer e viceversa, che lo faccia tu esplicitamente o implicitamente tramite auto-boxing/auto-unboxing ha un "costo" anche se minimo. E se vuoi usare le collezioni del framework non puoi fare diversamente ... solo oggetti possono contenere.

    Se un "vettore di int" lo usi solo tu internamente nel tuo codice e hai bisogno di gestire la cosa nel modo più efficiente possibile, nulla vieterebbe di realizzare es. un IntVector che implementi tu e che può anche non avere nulla a che fare (come interfacce e gerarchia) con le collezioni del framework.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973

    Re: Re: Programmazione generica e tipi primitivi

    Originariamente inviato da andbin
    un IntVector che implementi tu e che può anche non avere nulla a che fare (come interfacce e gerarchia) con le collezioni del framework.
    Anche se implementare le interfacce del collection framework sia una buona idea, perciò permette di usare la classe in modo più generico.

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  5. #5
    Chiarissimi grazie!

    In effetti uso i vettori generici già disponibili per non doverli riscrivere per ogni tipo primitivo. In questo modo ho un guadagno di tempo nella fase di programmazione ma una perdita di tempo in fase di esecuzione!

    Joda primitives da quanto ho capito, scrive proprio queste strutture dati per tipi primitivi, ma purtroppo non c'è ancora alcuna release...

  6. #6
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.