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

    Vector

    Mi servirebbe una struttura per memorizzare una lista di oggetti (da me definiti.. non primitivi). Questi oggetti sono di diversa tipologia.. quindi una cosa del genere:

    Lista :
    [1] myObject1, [2]myObject2, [3]myObject2, [4]myObject1 .... [n]myObjectN ....

    avevo pensato di memorizzare il tutto in un Vector.. e poi scorrerlo per recuperare gli oggetti.. ma....
    1) E' possibile ??
    2) come recupero il tipo dell'oggetto che prendo (ad esempio con elementAt(index) ) ?
    3) e soprattutto esiste una tecnica migliore di quella con i Vector????

    grazie!

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

    Re: Vector

    Originariamente inviato da Bobo
    Mi servirebbe una struttura per memorizzare una lista di oggetti (da me definiti.. non primitivi). Questi oggetti sono di diversa tipologia..
    Dovresti precisare alcune cose: per diversa tipologia intendi che sono di classi diverse? Hanno una tua classe base in comune (o una interfaccia implementata da tutti)? O discendono direttamente da Object?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Attenzione ai titoli e al regolamento.

    Per il tuo problema: certo che è possibile.
    Un Vector è una struttura adatta a contenere qualsiasi tipo di oggetto (ovviamente mi riferisco alla versione 1.4 di Java, ma anche nella 1.5, se non ricordo male, si può forzare il vincolo del type-check utilizzando un Vector<Object>).

    Per recuperare il tipo di oggetto che hai inserito... beh... è un altro paio di maniche.

    Però hai a disposizione l'operatore instanceof che ti può essere utile:
    codice:
    Vector tuoVector = new Vector();
    
    // ... inserisci tutti gli oggetti
    
    Object estratto = null;
    for(int x=0; x<tuoVector.size(); x++) {
       estratto = tuoVector.elementAt(x);
       if (estratto instanceof TuaClasse1) {
    
          // E' un oggetto di tipo TuaClasse1
    
       } else if (estratto instanceof TuaClasse2) {
    
          // E' un oggetto di tipo TuaClasse2
    
       } ... 
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    sì i miei oggetti appartengono a classi diverse

    myObject1.java :
    public class myObject1 {..}

    myObjectN.java:
    public class myObjectN {..}

    se la cosa è fattibile utilizzo il Vector.. ma mi chiedo se per caso non esiste qualcosa di meglio.. magari con minor carico sul sistema.. maggior performace...

    grazie!

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Bobo
    se la cosa è fattibile utilizzo il Vector.. ma mi chiedo se per caso non esiste qualcosa di meglio.. magari con minor carico sul sistema.. maggior performace...
    ArrayList, che è praticamente come il Vector ma non è synchronized.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente bannato
    Registrato dal
    Jul 2005
    Messaggi
    49
    per verificare la classe da cui viene instanziato un oggetto, puoi sfruttare il metodo getClass() e da li utilizzare tutti i metodi della classe Class

    http://java.sun.com/j2se/1.4.2/docs/...ang/Class.html

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.