Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Funzioni TreeMap

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    6

    Funzioni TreeMap

    Ciao ragazzi, io sto facendo un programma per la visualizzazioni di alcuni record.Prelevo i record da un file *.csv ,li salvo in una TreeMap,e riesco a far visualizzare,con le opportune funzioni,il primo e l'ultimo record.Ho dei problemi però con la visualizzazione del record successivo e di quello precedente.Volevo sapere se voi potete aiutarmi..Grazie!!

  2. #2
    la treeMap utilizza il metodo get() che ti permette di riprendere il tuo oggetto inserendo la chiave di ricerca.se sono record ordinati potresti metterli in un ciclo for.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    6
    potresti farmi un esempio pratico ?

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

    Re: Funzioni TreeMap

    Originariamente inviato da Ale07
    Volevo sapere se voi potete aiutarmi.
    No ... ben poco se non dici che cosa sono le chiavi e i valori della map e cosa hai già scritto a livello di codice.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5

    esempio

    questo è un esempio molto spartano ma penso che il concetto dovrebbe essere chiaro
    codice:
    public class Tree {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		TreeMap tre = new TreeMap();
    		//setto gli elementi della tree map con le rispettive chiavi
    		for(int i=0;i<5;i++){
    			tre.put(String.valueOf(i), "argomento "+ String.valueOf(i));
    		}
    		//stampo i valori
    		for (int i=0;i<tre.size();i++){
    			String v = String.valueOf(i);
    			System.out.println(tre.get(v));
    		}
    	}
    
    }
    se hai altri problemi chiedi pure

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    6
    per dare più informazioni,questo è il programma:


    import java.io.*;
    import java.util.*;
    import javax.swing.*;
    class Index{
    private TreeMap<String,Long>indexMap;
    private String filename,indexFilename;
    private RandomAccessFile stream;
    public Index (String s){
    indexMap=new TreeMap<String,Long>();
    filename=new String(s);
    create();
    }
    public static void main (String arg[]){
    String filename="C:\\Documents and Settings\\ALE 7!\\Index.csv";
    Index ind=new Index(filename);
    ind.find("11");
    ind.close();
    }
    public void create (){
    try{
    indexFilename=filename.substring(0,filename.length ()-3)+"ind";
    File dataFile=new File(filename);
    File indexFile=new File(indexFilename);
    if (indexFile.exists()){
    long dataFilemodifield=dataFile.lastModified();
    long indexFilemodifield=indexFile.lastModified();
    if(indexFilemodifield>dataFilemodifield){
    FileInputStream filein= new FileInputStream (indexFilename);
    ObjectInputStream fin= new ObjectInputStream (filein);
    indexMap=(TreeMap<String,Long>)fin.readObject();
    filein.close();
    stream=new RandomAccessFile (filename,"rw");
    return;
    }

    }
    stream=new RandomAccessFile (filename,"rw");
    String record=null;
    long recPos=0l;
    while ((record=stream.readLine())!=null){
    StringTokenizer st= new StringTokenizer(record,";");
    if(st.countTokens()==0)continue;
    String key=st.nextToken();
    indexMap.put(key,new Long(recPos));
    recPos=stream.getFilePointer();
    }
    }
    catch(Exception e){
    JOptionPane.showMessageDialog(null,"[create]"+e.toString());
    try{stream.close();}catch(Exception ex){}
    System.exit(0);
    }
    }

    public void close(){
    try{
    stream.close();
    FileOutputStream fileout=new FileOutputStream(indexFilename);
    ObjectOutputStream fout=new ObjectOutputStream(fileout);
    fout.writeObject(indexMap);
    fout.close();
    }
    catch(Exception e){
    JOptionPane.showMessageDialog(null,e.toString());
    System.exit(0);
    }
    }

    public String[] find (String key){
    String field[]=null;
    try{
    RandomAccessFile f=new RandomAccessFile(filename,"r");
    Long pos=indexMap.get(key);
    long recPos=pos.longValue();
    f.seek(recPos);
    String record=f.readLine();
    StringTokenizer st=new StringTokenizer(record,";");
    field=new String[st.countTokens()];
    for(int i=0;i<st.countTokens();i++){
    String token=st.nextToken();
    field[i]=new String(token);
    System.out.println(field[i]);
    }
    f.close(); }
    catch(Exception e){return null;}
    return field;
    }

    public String[] firstRecord(){
    String array[]=null;
    String primo=indexMap.firstKey();
    array=find(primo);
    return array;
    }
    public String[] lastRecord(){
    String array[]=null;
    String ultimo=indexMap.lastKey();
    array=find(ultimo);
    return array;
    }
    public String[] nextRecord(){
    String array[]=null;
    String prossimo=null;
    array=find(prossimo);
    return array;
    }
    public String[] previousRecord(){
    String array[]=null;
    String precedente=null;
    array=find(precedente);
    return array;
    }
    }

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    6
    ed il mio problema sono : nextRecord(),previousRecord()!

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Ale07
    ed il mio problema sono : nextRecord(),previousRecord()!
    Scusa ma ... questi nextRecord(),previousRecord() cosa sarebbero e di quale classe???
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    6
    sono delle funzioni ke devo creare per prelevare dal file *.csv il prossimo ed il precedente record, solo ke con la treemap ci sono le funzioni firstKey() e LastKey() ke mi permettono di prelevare il primo e l'ultimo elemento,ma nn ci sono le funzioni dirette nextKey() e previousKey() ke mi permettono di prelevare il prossimo ed il precedente elemento.Quindi io sono arrivato a quel punto del programma e nn riesco ad andare avanti.
    La nextRecord() e la previousRecord sono delle funzioni ke devo rikiamare in un altra classe ke mi visualizza il tutto.

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Ale07
    solo ke con la treemap ci sono le funzioni firstKey() e LastKey() ke mi permettono di prelevare il primo e l'ultimo elemento,ma nn ci sono le funzioni dirette nextKey() e previousKey() ke mi permettono di prelevare il prossimo ed il precedente elemento.
    I metodi che ti servirebbero ci sono (non con quei nomi che dici tu) ma solo da Java 6, dove TreeMap implementa NavigableMap ed ha tutta una serie di metodi per "navigare" nel TreeMap (es. prendere la chiave y appena superiore o inferiore alla chiave x).

    Se non puoi usare Java 6, qualcosa si può comunque fare ma devi sfruttare i metodi di TreeMap definiti da SortedMap, facendo qualche lavoretto in più, però. Vedi headMap, tailMap ecc...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.