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

    Numeri di oggetti non conosciuto a priori

    Salve ragazzi...ho un problema da sottoporvi, e spero possiate darmi una mano:

    devo leggere un xml per un lettore RSS, e creare tanti oggetti Notizie quanti sono le sezioni Item nel mio XML; non sapendolo a priori, ho iterato il file con un parser, creando un indice che mi tenesse conto del numero delle sezioni Item trovate; e qui il problema.....

    dovrei poter creare tanti oggetti Notizia tanti quante sono le sezioni Item,perchè ogni volta con dei metodi pubblici scriverò dei dati in questi oggetti, che ogni volta deve essere appunto diverso; poi assocerò il riferimento di ogni oggetto notizia diverso, ad una posizione diversa di un array o ArrayList di notizie

    in pratica, come in linux, dove potrei fare una cosa simile a

    codice:
    for (int f = 0; f < indice; f++) { 
    Notizia notizia$(f) = new Notizia();
    }
    e quindi avere ogni volta ottengo oggetto con i nomi

    notizia1
    notizia2
    ....

    ho qualche soluzione simile in JAVA???
    Spero si sia capito, altrimenti ve lo rispiego...ho troppo bisogno del vostro aiuto!!
    Grazie

    ciaooo

    Simone

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    160
    vediamo se ho capito...devi tenere un'array che non sai a priori quanto sarà grande, che contengono degli oggetti di tipo notizia, e poi modificarli tramite metodi pubblici.
    Bene in questo caso c'è la classe Vector che contiene degli Object generici, oppure se usi java 5.0 anche specifici. Esempio:

    Java 1.4.0
    codice:
    import java.util.Vector;
    ...
    Vector v=new Vector(0); //inizialmente vuoto
    Notizia n=new Notizia(); //o comunque la ottieni come vuoi tu
    v.add(n); //aggiunge la notizia in coda al vettore
    v.removeElementAt(0); //rimuove la notizia alla posizione 0
    Notizia n2=(Notizia)v.elementAt(0); //restituisce l'elemento notizia in posizione 0
    //poi su n2 ci fai quello che vuoi con i metodi pubblici
    ...
    Java 5.0 non cambia molto, puoi "tipizzare" direttamente il vector in modo da non dover rifare il cast quando fai il get
    codice:
    Vector<Notizia> v=new Vector<Notizia>(0);
    Notizia n=new Notizia(); //o comunque la ottieni come vuoi tu
    v.add(n); //aggiunge la notizia in coda al vettore
    v.removeElementAt(0); //rimuove la notizia alla posizione 0
    Notizia n2=v.elementAt(0); //restituisce l'elemento notizia in posizione 0
    //poi su n2 ci fai quello che vuoi con i metodi pubblici

  3. #3
    No allora..ti spiego:

    io so fare gli array di dimensione non conosciute a priori...tramite gli ArrayList;
    io devo creare tanti oggetti Notizia quanti sono i miei item nel file( che non so a priori), quindi che abbiamo anche nomi diversi... ma devono essere oggetti diversi, non alias alla stessa notizia; poi li andrò ad aggiungere all'ArrayList;

    devo poter usare un for come questo, ma come fare a mettere ad ogni ciclo un nome diverso?

    codice:
    for (int f = 0; f < indice; f++) { 
    Notizia notizia = new Notizia();
    }
    la tua soluzione creava una sola notizia aventi alias n e n2, e non mi è utile, perchè nelle due notizie devo poter mettere info diverse, per poi far restituire alla mia funzione un array di Notizie, con contenuti diversi ovviamente
    Spero si sia capito ora
    Grazie ciao

    Simone

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    160
    ok allora avevo capito giusto...ogni oggetto Notizia corrisponde ad un Item nell'RSS.

    supponiamo per esempio che ogni tua Notizia abbia i campo titolo e contenuto (e' solo un esempio). Quando tu esegui questo con il vector (e' lo stesso anche con ArrayList)

    codice:
    Vector v=new Vector();
    Notizia n=null;
    for(int f=0;f<indice;f++){
       n=new Notizia();
       n.setTitolo("Mio titolo");//ovviamente mettici quello che vuoi, sempre diversi ad ogni ciclo
       n.setContenuto("Contenuto");
       v.add(n);
    }
    stai aggiungendo al vettore n notizie diverse, e non alias della stessa notizia. L'esempio te l'ho fatto con una sola notizia per farti vedere il funzionamento di Vector.
    Semplicemente poi fai cosi':

    codice:
    Notizia[] news=new Notizia[v.size()];
    for(int i=0;i<v.size();i++)
       news[i]=(Notizia)v.elementAt(i);
    e quello che ottieni e' un array di elementi Notizia a cui puoi accedere con news[0], news[1], ecc.

    Puoi anche evitare di creare l'array e accedere ad ogni elemento con v.elementAt(i) invece che con news[i].

  5. #5
    ok ti ringrazio tantissimo..ci sono riuscito anche con gli ArrayList;
    avevo provato, ma non ci ero riuscito...forse nelle mie prove ho creato l'oggetto, ho fatto qualcosa nel posto sbagliato;
    Cmq grazie mille ancora
    Bye

    Simone

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 © 2024 vBulletin Solutions, Inc. All rights reserved.