Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 46
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    258

    Arraylist...dubbi iniziali...

    Salve ragazzi,
    vorrei chiedervi un aiuto.
    E' la prima volta che implemento direttamente degli oggetti e ho un pò di dubbi.
    Primo
    Supponiamo che io abbia un file con numerose righe,ognuna con stesso numero di colonne,per esempio 4.
    Supponiamo che la prima abbia un formato particolare,sia un'intestazione del tipo

    string string string string,

    cioè un array di stringhe,

    mentre le altre abbiano tutte un formato comune

    string double double double,

    cioè un campo stringa e un array di double.

    Voglio realizzare 2 oggetti,uno per memorizzare l'intestazione, un altro per memorizzare una generica "riga"(dalla seconda in poi); il mio file sarà composto quindi da un oggetto intestazione e da un arraylist di oggetti "riga".
    Potete aiutarmi un pò con il codice?
    Grazie in anticipo..

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    questo è un oggetto che contiene una serie di campi String e per ognuno sono definiti i metodi di accesso
    codice:
    public class Prodotti {
      private String idPr;
      private String nomePr;
      private String prezzo;
      private String iva;
    
      public Prodotti(String idPr, String nomePr,String prezzo, String iva) {
        this.idPr=idPr;
        this.nomePr=nomePr;
        this.prezzo=prezzo;
        this.iva=iva;
      }
    
      public String getIdPr(){
        return idPr;}
    
      public void setIdPr(String idPr){
        this.idPr=idPr;}
    
      public String getPrezzo(){
        return prezzo;}
    
      public void setPrezzo(String prezzo){
        this.prezzo=prezzo;}
    
      public String getIva(){
        return iva;}
    
      public void setIva(String iva){
        this.iva=iva;}
    
      public String getNomePr(){
        return nomePr;}
    
      public void setNomePr(String nomePr){
        this.nomePr=nomePr;}
    
      public String toString(){
        return getNomePr();}
    
      public String getDescription(){
        return "Id : "+getIdPr() +"\n Nome : "+getNomePr()+"Prezzo al Kg : "+getPrezzo() +"\n Iva applicata : "+getIva();}
    
    }

    Per gli ArrayList li crei così
    codice:
    private ArrayList prodotti= new ArrayList();
    poi dovrai creare tutti i metodi per aggiungere, rimuovere ecc il tuo oggetto all'array

    codice:
    public boolean insProdotti(Prodotti nuovo){
           return prodotti.add(nuovo);
      }

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    258

    Caricamento Arraylist...

    Grazie Perzem,
    ti ringrazio e vorrei chiederti di risolvermi altri dubbi.
    Ho creato l'intestazione,che è un array di string di dimensione nota da un parametro Col precedentemente calcolato,quindi

    codice:
    string[] Intestazione=new string[Col];
    Per quanto riguarda il codice dell'oggetto riguardante la generica riga,anche qui numberOfNumericColumns mi dà la cardinalità del vettore,quindi


    codice:
    public String processMyFile() throws IOException {
        	BufferedReader br = new BufferedReader(new InputStreamReader(myFile.getInputStream())); 
                String line = null; 
                while ((line = br.readLine()) != null) {
                line = line.replace (',', '.'); 
                row++;
                StringTokenizer st = new StringTokenizer(line); 
                // Assuming that the first column of every row is a String and 
                //the remaining columns  are numbers, count the number of numeric columns. 
                numberOfNumericColumns = (st.countTokens()-1);
                col=(numberOfNumericColumns+1);
                
                Intestazione string[]=new string[col];
                public class riga{
                	String geneid;
                	values double[]=null; 
                }
                public Riga(String idGene,double[numberOfNumericColumns] x ) {
                    this.geneid=idPr;
                    
                }
            }
      }
    Ora dichiaro un contenitore di tipo arraylist di riga e lo chiamo righe.

    codice:
    private ArrayList righe= new ArrayList();
    e con vari add dovrei caricare tutte le righe del txt (dalla seconda in poi,escludendo la prima che è l'intestazione)


    Va bene questa definizione?E' chiaro che poi devo definire i metodi di get e set....

    Quello che voglio chiederti è come devo fare per popolare l'arraylist a partire dal mio txt e in particolare dal buffered reader br dichiarato nel mio programma?
    Ti ringrazio in anticipo

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    qui trovi come leggere un file riga per riga
    http://www.javastaff.com/article.php...50429090542890

    codice:
    while(linea!=null) {
    righe.add(linea) //per agg all'array
           System.out.println(linea);
           linea=br.readLine();
    }
    per saltare la prima linea puoi inserire un contatore e agg all'array solo se è diverso da 0 o 1 dipende da come lo inizializzi.


    per popolare l'array righe
    codice:
    righe.add(String riga);
    per leggerle dall'array
    codice:
    String s1 = (String)righe.get(0);
    String s2 = (String)lista.get(1);

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    258

    non riesco ad aggiungere elementi all'arraylist....

    Scusami Perzem se insisto,
    ma non mi è chiara una cosa.
    Ho realizzato questa piccola applicazione java che spero sia corretta(dagli uno sguardo se ti va,ho ancora parecchi dubbi al riguardo) la quale definisce 2 oggetti,uno che è un array di stringhe per l'intestazione e uno che è un generico oggetto riga per rappresentare le righe dalla seconda in poi.
    Inoltre ho definito un'arraylist per contenere tutte queste righe del secondo formato.
    Il punto in cui non riesco ad andare avanti è quando nel main comincio a leggere il file con bufferedreader, sfrutto la lettura riga per riga,sostituisco a . la ,(fa parte dei requisiti del mio problema) ma non ho capito come aggiungere in questo caso le singole righe all'arraylist.
    Potresti aiutarmi a completare il codice e spiegandomi il passaggio che mi manca?
    Penso si tratti di qualche riga..ti prego aiutami...


    codice:
    package com.devsphere.articles.jsfupload;
    import java.io.BufferedReader; 
    import java.io.FileReader; 
    import java.io.IOException; 
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.util.StringTokenizer; 
    public class Riga{
    	private static String fileName = "Dato2.txt";
    	private String geneid=null;
    	private double[] values=new double[5]; 
    	private static int row=0;
    	private static int numberOfNumericColumns=0;
    	private static int col=0;
    	
    	public Riga(String idGene,double[] x ) {
        this.geneid=idGene;
        this.values=x;
    	}
    	public String getgeneid(){
    		return this.geneid;
    	}
    	public void setgeneid(String idGene){
    		this.geneid=idGene;
    	}
    	public double[] getvalues(){
    		return this.values;
    	}
    	public void setvalues(double[] x){
    		this.values=x;
    	}
    	public class Head{
    		String[]Intest=new String[col];
    		public Head(String[] x) {
    		    this.Intest=x;
    		}
    		public String[] getHvalues(){
    			return this.Intest;
    		}
    		public void setvalues(String[] x){
    			this.Intest=x;
    		}
    	}
    	
    	public static void main(String[] args) throws IOException { 
    		
    		ArrayList <Riga> rows = new ArrayList <Riga>();
    		FileReader reader=new FileReader(fileName);
    		BufferedReader br = new BufferedReader(reader); 
    		String line = null;
    		//StreamTokenizer st = new StreamTokenizer(new InputStreamReader(new FileInputStream("input.txt")));
    		while ((line = br.readLine()) != null) {
    			line = line.replace (',', '.');   
    			row++;
                StringTokenizer st = new StringTokenizer(line); 
                numberOfNumericColumns = (st.countTokens()-1);
                col=(numberOfNumericColumns+1);
                );
    		}
    		
    }

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    codice:
    public class Riga{
    		private String geneid=null;
    	private double[] values=new double[5]; 
    		
    	public Riga(String idGene,double[] x ) {
        this.geneid=idGene;
        this.values=x;
    	}
    	public String getgeneid(){
    		return this.geneid;
    	}
    	public void setgeneid(String idGene){
    		this.geneid=idGene;
    	}
    	public double[] getvalues(){
    		return this.values;
    	}
    	public void setvalues(double[] x){
    		this.values=x;
    	}}
    	
    
    
    public class Head{
    	String[]intest=new String[col];
    	private static int col=0;
    	
    	
    	public Head(String[] x) {
    	    this.intest=x;
    	}
    	public String[] getHvalues(){
    		return this.intest;
    	}
    	public void setvalues(String[] x){
    		this.intest=x;
    	}
    
    }
    
    
    
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.StringTokenizer;
    
    
    
    public class princ {
    
    	private static String fileName = "Dato2.txt";
    	private String geneid=null;
    	double[] values=new double[5]; 
    	private static int row=0;
    	private static int numberOfNumericColumns=0;
    	private static int col=0;
    	String[]intest=new String[col];
    	private ArrayList rows = new ArrayList();
    	Head h;
    	Riga r;
    	String igen="";
    	
    	
    	public boolean insRighe(Riga nuovo){
    	       return rows.add(nuovo);
    	}
    	
    	public void carica()throws IOException{
    		ArrayList intestazione = new ArrayList();
    		
    		FileReader reader=new FileReader(fileName);
    		BufferedReader br = new BufferedReader(reader); 
    		
    		
    		String line = null;
    		
    		while ((line = br.readLine()) != null) {
    			line = line.replace (',', '.'); 
    			if(row==0){
    //				qua devi tokenizzare la stringa e mettere i vari valori nell'array di stringhe intest
    				h=new Head(intest);	//crei l'oggetto head			
    
    }
    			else {
    				
    				//qua devi tokenizzare la stringa e mettere il primo valore nella stringa igen
    				// e il resto nell'arrray di double values
    					
    				r=new Riga(igen,values); //crei l'oggetto riga
    			insRighe(r); //aggiungi 
    				}
    			row++;
    	        
    	        
    		}
    	}
    	
    	
    public static void main(String[] args) throws IOException { 
    	princ p=new princ();
    	p.carica();
    	
    }
    
    
    }
    prova così, magari c'è qualche imperfezione

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    258

    grazie mille....mi serve ancora un piccolo aiutooo...

    Grazie Perzem,
    non ho parole per la tua gentilezza.
    Del codice non ho capito string igen,xchè nella classe riga si chiama geneid,quindi ho eliminato string igen.
    Ho provato a completare le parti di codice da te commentate,credo di aver risolto il caricamento dell'intestazione nell'array di stringhe(se puoi dargli uno sguardo mi faresti un favore), per quanto riguarda la fine del codice,dove devo caricare l'array di double nella riga sono ore che provo non riesco a trovare la soluzione,cioè credo di importare bene la prima stringa che è il geneid,ma non riesco a caricare l'array di double come tu mi hai detto...potresti darmi un'ultima mano col codice di quest'ultima funzione?
    Ti ringrazio anticipatamente per l'aiuto che mi stai dando.

    codice:
    package com.devsphere.articles.jsfupload;
    
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.StringTokenizer;
    
    public class princ {
    
    	private static String fileName = "Dato2.txt";
    	private String geneid=null;
    	double[] values=new double[5]; 
    	private static int row=0;
    	private static int numberOfNumericColumns=0;
    	private static int col=0;
    	String[]intest=new String[col];
    	private ArrayList rows = new ArrayList();
    	Head h;
    	Riga r;
    	//String igen="";
    	
    	
    	public boolean insRighe(Riga nuovo){
    	       return rows.add(nuovo);
    	}
    	
    	public void carica()throws IOException{
    		
    		
    		FileReader reader=new FileReader(fileName);
    		BufferedReader br = new BufferedReader(reader); 
    		
    		
    		String line = null;
    		
    		while ((line = br.readLine()) != null) {
    			line = line.replace (',', '.'); 
    			if(row==0){
    				StringTokenizer st = new StringTokenizer(line); 
    				numberOfNumericColumns = (st.countTokens()-1); 
    			    col=(numberOfNumericColumns+1); 
    			    
    			    	for (int i=0;i<col;i++) {
    			    		intest[i] = st.nextToken();       		
    			    		i++;    	
    			    	}     
    			    
    				h=new Head(intest);	//crei l'oggetto head			
    			}
    
    			else {
    				StringTokenizer st = new StringTokenizer(line);
    				geneid=st.nextToken();
    				
    				
    				
    				//qua devi tokenizzare la stringa e mettere il primo valore nella stringa igen
    				// e il resto nell'arrray di double values
    					
    				r=new Riga(geneid,values); //crei l'oggetto riga
    			insRighe(r); //aggiungi 
    				}
    			row++;
    	        
    	        
    		}
    	}
    	
    	
    	public static void main(String[] args) throws IOException { 
    		princ p=new princ();
    		p.carica();
    	
    	}
    
    
    }

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    mi passeresti il contenuto del file dato.txt per provare il tutto??

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    258

    Eccone un pezzo...

    Il resto del file è uguale, quindi non te l'ho postato.
    Grazie ancora...


    codice:
    TREsetID	MPR.XCL	MPR1.XCL	MPR2.XCL	MAM.XCL	MAM1.XCL	
    1007_s_at	2527,515572	2745,427613	2721,744091	1418,374261	1414,64529	
    1053_at	39,40240421	39,61677933	40,49511453	49,68946836	50,7458342	
    117_at	66,63013304	65,33871806	61,39680462	59,04226796	67,0997162	
    121_at	367,3210537	336,2208914	322,4042541	349,8719301	352,4845904
    1255_g_at	13,38238688	14,25254252	12,95106724	13,92869896	13,74589787	
    1294_at	68,452501	64,00138237	63,25395964	60,63619196	69,00281834	
    1316_at	42,63123288	41,67330724	42,14644633	38,62671197	39,41499355

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    risolto tutto ok


    codice:
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.StringTokenizer;
    import java.util.*;
    
    public class princ {
    
    	private static String fileName = "Dato2.txt";
    	private String geneid=null;
    	double[] values=new double[5]; 
    	private static int row=0;
    	private static int numberOfNumericColumns=0;
    	private static int col=0;
    	String[]intest;
    	private ArrayList rows = new ArrayList();
    	Head h;
    	Riga r;
    	//String igen="";
    	
    	
    	public boolean insRighe(Riga nuovo){
    	       return rows.add(nuovo);
    	}
    	
    	public List stampaRows(){
    	     return rows;}
    	
    	public Head stampaHead(){
    	     return h;}
    
    	public void carica()throws IOException{
    		
    		
    		FileReader reader=new FileReader(fileName);
    		BufferedReader br = new BufferedReader(reader); 
    		
    		
    		String line = null;
    		
    		while ((line = br.readLine()) != null) {
    			line = line.replace (',', '.'); 
    			if(row==0){
    				StringTokenizer st = new StringTokenizer(line); 
    				numberOfNumericColumns = (st.countTokens()-1); 
    			    col=(numberOfNumericColumns+1); 
    			    intest=new String[col];
    			  int io=0;
    			    while(st.hasMoreTokens()){
    			    	String aapp=st.nextToken();
    			    	if(aapp.compareTo("")!=0)
    		    		{intest[io] = aapp;       		
    		    		 io++;	
    			    
    			    }
    			    
    			    
    			   /* for (int i=0;i<=col;i++) {
    			   	if(st.nextToken().compareTo("")!=0)
    	    		{intest[i] = st.nextToken();       		
    	    		 i++;}*/
    			   }
    			   System.out.println("intest");
    			   for(int w=0;w<=intest.length-1;w++){
    			   System.out.println(w+" "+intest[w]);	
    			   }
    			   System.out.println("FINE intest");
    			   
    			   h=new Head(intest);//crei l'oggetto head		
    			   String []qa=h.getHvalues();
    			   String asd="";
    			   for(int i=0;i<=qa.length-1;i++){
    			   	asd=asd.concat(qa[i]+" ");
    			   	
    			   }System.out.println("head "+asd);//stampo contenuto el head
    			}
    
    			else {
    				
    				 StringTokenizer sta = new StringTokenizer(line);
    				 int z=0;
    				 while (sta.hasMoreTokens()) {
    			        
    			       String app=sta.nextToken();
    			         if (app.contains("_")){
    			         	geneid=	app;
    			         	System.out.println("geneid   "+geneid);
    			         }else
    			         {
    			         	values[z]=Double.parseDouble(app);
    			         z++;}
    			         
    			             
    			         
    			         
    			         }
    				 System.out.println("val");
    				   for(int w=0;w<=values.length-1;w++){
    				   System.out.println(w+" "+values[w]);	
    				   }
    				   System.out.println("FINE val");
    				   
    				   r=new Riga(geneid,values); //crei l'oggetto riga
    				   
    				   //stampa il contenuto dell'oggetto riga
    				   System.out.println("riga");
    				   System.out.println(r.getgeneid());
    				   double[] valus=r.getvalues();
    				   for(int e=0;e<=valus.length-1;e++){
    				   	System.out.println(valus[e]);}
    				   
    				   
    					insRighe(r); //aggiungi 
    			      		
    							
    				}
    			row++;
    	        
    	        
    		}
    	}
    	
    	
    	public static void main(String[] args) throws IOException { 
    		princ p=new princ();
    		p.carica();
    	
    	}
    
    
    }

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.