Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    caricare element in piu vettori

    ciao a tutti sono nuovo nel forum e nel mondo della programmazione in java....per motivi scolastici devo realizzare un progetto di una una rubrica.i nominativi (nome cognome ecc...) devono essere caricati e scritti in xml utilizzando le librerie jdom.ora sto cercando di completare la fase di caricamento attaverso dei vettori (classe Vector)
    questa è la classe persona:

    Codice PHP:
    import java.util.Vector;
    public class 
    Persona {
    private 
    Vector v;

    public 
    Persona() {
    = new Vector(3);
    }

    public 
    void add(String str) {
    v.add(str);
    }

    public 
    String get(int index) {
    return (String) 
    v.get(index);

    public 
    String remove(int index){
    return (String) 
    v.remove(index); 

    }


    ora il mio problema è che voglio creare un vettore per ogni persona caricata mentre se scrivo cosi:

    Codice PHP:
    Persona persona = new Persona();//mi creo un vettore che deve accogliere tutte le persone
    persona.add(""+nominativo.getChild("nome").getTextTrim());//aggiungo nel vettore la persona 
    persona.add(""+nominativo.getChild("cognome").getTextTrim());
    persona.add(""+nominativo.getChild("indirizzo").getTextTrim());
    persona.add(""+nominativo.getChild("telefono").getTextTrim());
    persona.add(""+nominativo.getChild("affinita").getTextTrim()); 
    tutti i nominativi mi vengono caricati in un unico vettore.ora spero di essere stato chiaro...ma chi mi sa suggerire come fare??grazie anticipo a chi mi aiuterà!!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    nome, cognome, indirizzo ecc... sono proprietà di una persona. Quindi non vedo il senso e l'utilità di inserire questi dati in un vettore. Sarebbe più logico definire queste proprietà come campi della classe Persona:

    codice:
    class Persona
    {
        private String nome;
        private String cognome;
        ....ecc....
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    devo inserirli in un vettore perchè questi dati devono essere poi modificati (eliminazione persona controlli di esistenza ecc..) e mi è sembrato più logico inserirlo in un vettore (cosi consigliato dal professore...)il mio problema che vorrei crearmi un vettore per ogni persona e non un vettore per tutte le persone...anche perchè deve essere capace di caricare in memoria tutte le persone che si trovano nel file xml..altrimenti come posso gestire la cosa??

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da misterxxitalia
    devo inserirli in un vettore perchè questi dati devono essere poi modificati (eliminazione persona controlli di esistenza ecc..)
    E allora? Non capisco cosa ti dia in più l'utilizzo di un vettore per le proprietà della persona .... semmai ti complica la vita, devi sempre sapere l'indice esatto di ogni proprietà e se poi ti balzasse l'idea di eliminare una proprietà??

    Eventualmente si potrebbe fare usando una 'map' ma la soluzione più basilare e comune è quella di mettere dei campi private nella classe. Dipende tutto da quante proprietà devi avere, da cosa/quanto la classe deve "sapere" sulle proprietà, da come devono essere gestite (ad esempio devi per caso avere la possibilità di eliminare delle proprietà??).

    Insomma ... lascia perdere un attimo il prof .... e ragiona.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    scusa ma sono agli inizi e nn è facile per me capirti...se io devo eliminare una persona che ha come campo "nome", "cognome","indirizzo","numero di telefono";"affinita" prendo il suo specifico vettore ed elimino tutti i suoi campi esempio con il metodo removeAll()...mi pare un modo per organizzare tutte le persone...se faccio come mi suggerisci tu come potrei fare?
    questo è il testo del progetto se magari gli puoi dare una letta...
    http://www.cs.unicam.it/insegnamenti...ttoLab2007.pdf

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Ok, ti faccio un esempio di cosa intendo io.

    codice:
    import java.util.*;
    
    public class Prova
    {
        public static void main (String[] args)
        {
            Rubrica r = new Rubrica ();
            
            Nominativo n1 = new Nominativo ("Mario", "Rossi");
            Nominativo n2 = new Nominativo ("Giacomo", "Verdi");
            
            r.addNominativo (n1);
            r.addNominativo (n2);
        }
    }
    
    class Rubrica
    {
        private ArrayList<Nominativo> nominativi;
    
        public Rubrica ()
        {
            nominativi = new ArrayList<Nominativo> ();
        }
    
        public void addNominativo (Nominativo n)
        {
            nominativi.add (n);
        }
    
        // ...
    }
    
    class Nominativo
    {
        private String nome;
        private String cognome;
    
        public Nominativo (String nome, String cognome)
        {
            this.nome = nome;
            this.cognome = cognome;
        }
    
        // ...
    }
    Non ho messo in Nominativi tutti i campi che a te servono perché il mio è solo un esempio. Però riesci a vedere che c'è una "mappatura" praticamente 1:1 con la struttura di quel file xml descritto nel documento pdf??

    Poi nulla ti vieta di aggiungere ad esempio in Rubrica i metodi per cercare i nominativi, eliminarli, ecc... E poi a quel punto realizzerai anche delle apposite classi per leggere/scrivere il file XML corrispondente. Potresti fare una classe ScrittoreRubrica con un metodo che riceve un Rubrica che viene scritto sul file in XML.

    Cioè quello che vorrei farti capire è che in Java (come in altri linguaggi ad oggetti) è necessario avere una "visione" object-oriented delle cose. Cioè non andare subito a pensare ad un vettore per memorizzare le proprietà di un nominativo. Pensa alle "entità" che ci sono in gioco e a come debbano essere messe in relazione l'una con l'altra.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    più o meno ho capito il concetto...ma il problema è questo:
    Codice PHP:
    Nominativo n1 = new Nominativo ("Mario""Rossi");
            
    Nominativo n2 = new Nominativo ("Giacomo""Verdi"); 
    io devo aggiunge un numero non prestabilito di nominativi dal file xml...questa è la classe che ho scritto per il caricamento dei dati..

    Codice PHP:
    import java.io.File// Gestione defi files

    import java.io.IOException// Errori di I/O

    import java.io.PrintStream// Flusso per la stampa

    import java.util.Iterator// Strumento per la scanione di liste

    import java.util.List; // Lista di oggetti

    import org.jdom.Document// Documento XML

    import org.jdom.Element// Singolo elemento XML

    import org.jdom.JDOMException// Errori sulla gestione XML

    import org.jdom.input.SAXBuilder// Costruttore di documenti XML

    import org.jdom.output.XMLOutputter// Scrittore di documenti XML



    public class XMLRead {

    public 
    void errore() throws IOExceptionJDOMException {//gestione errore....da rivedere!!

    Document documento null;

     
    SAXBuilder builder = new SAXBuilder();// Costruzione di un documeto SAX

       
    documento builder.build(new File("rubrica.xml"));// Lettura del file XML 

    Element rubrica documento.getRootElement();// Posizionamento sulla root (rubrica)

    List nominativi rubrica.getChildren("nominativo"); // Costruzione della lista con tag "nominativo"

    Iterator i nominativi.iterator();// Uso di un iteratore per scandire la lista

    while (i.hasNext()) {// Controllo dell'esistenza di altri elementi nella lista

    Element nominativo = (Elementi.next();// Elemento successivo della lista



    Persona persona = new Persona();//mi creo un vettore che deve accogliere tutte le persone



    persona.add(""+nominativo.getChild("nome").getTextTrim());//aggiungo nel vettore la persona 

    persona.add(""+nominativo.getChild("cognome").getTextTrim());

    persona.add(""+nominativo.getChild("indirizzo").getTextTrim());

    persona.add(""+nominativo.getChild("telefono").getTextTrim());

    persona.add(""+nominativo.getChild("affinita").getTextTrim());

    System.out.println(persona.get(3));

    }}} 
    ora lo devo rivedere ecc...ma come faccio a gestire come dici tu 10000 nominativi??

  8. #8
    up :master:

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Capisco che hai bisogno di risolvere il problema ma non è che si può dire molto altro ....
    La tua soluzione che hai scritto non mi sembra affatto valida/logica. Continuo a dire che bisogna solo ragionare un pochino. Ho anche scritto un codice di esempio per chiarire cosa si può fare per rappresentare bene tramite oggetti la struttura del file XML.

    Il tuo file XML è costituito da un tag radice <rubrica> che può contenere N tag <nominativo> e ognuno di questi contiene 5 tag per indicare le proprietà del nominativo.

    Nel mio codice che ho postato c'è una classe Rubrica che può appunto contenere N nominativi e una classe Nominativo che contiene le proprietà di un nominativo.

    Ora, indipendentemente dalla tecnica di parsing del file XML che vuoi usare (se con una libreria esterna come JDOM o tramite JAXP di Java SE, usando la tecnica SAX o DOM o altro che sia ...) ogni volta che trovi un <nominativo> dovresti prelevare le sue proprietà, creare un oggetto Nominativo ed aggiungerlo in Rubrica tramite l'apposito metodo.
    Tutto qui.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    no guarda sei stato chiarissimo ho capito molte cose!!ma il mio problema che era e che rimane e quello di gestire tutti i nominativi ora mi spiego:
    nel tuo arraylist chiamato nominativo ci sono tutti gli attributi di una persona ora mi consigli che per ogni nominativo che trovo devo creare un nuovo nominativo.

    Codice PHP:
    Nominativo n1 = new Nominativo ("Mario""Rossi");
            
    Nominativo n2 = new Nominativo ("Giacomo""Verdi"); 
    il mio problema che ho un numero non definito di nominativi e cosi facendo non ho la più pallida idea di come gestire la cosa...
    io ho pensato in questo modo:attraverso un metodo di jdom (nominativi.size()) conto tutti i nominativi che ho nell'xml e mi creo un array (o meglio un vector??)con un numero esatto di nominativi (una specie di array dentro array)xo mi sembra molto macchinosa come cosa...che mi consigli??spero di essere stato chiaro....grazie!!

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.