Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    106

    [JAVA] problema con un metodo

    Ciao ragazzi volevo sapere come potevo fare a risolvere questo problema:
    Io ho fatto questa classe e vorrei far ritornare al metodo iterator tutti i valori del mio array mediante un ciclo...come posso fare??
    Devo fare questa cosa perchè almeno nel main non devo fare il mi ciclo for each perchè mi basta chiamare il mi metodo

    codice:
    import java.util.*;
    
    public class sArrayList extends DataStruct{
    	
    	int sSize;
    	ArrayList<Object> struct;
    	
    	public sArrayList(){
    		struct = new ArrayList<Object>();
    		sSize = struct.size();
    	}
    	
    	public sArrayList(int x){
    		struct = new ArrayList<Object>(x);
    		sSize = x;
    	}
    	
    	public Object search(Object e){
    		boolean flag = false;
    		int point = 0;
    		for(int i = 0; i<=sSize; i++){
    			if(e == struct.get(i)){
    				flag = true;
    				point = i;
    				break;
    			}
    		}
    		if(flag == true)
    			return struct.get(point);
    		else
    			return null;
    	
    	}
    	
    	public boolean add(Object e){
    		struct.add(e);
    		return true;
    	}
    	
    	public boolean delete(Object e){
    		if(search(e) != null){
    			struct.remove(e);
    			return true;
    		}else
    			return false;
    	}
    	
    	public Object iterator(){
    		for(Object i : struct)
    			return i;          <----COME FACCIO??
    	}
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157

    Re: [JAVA] problema con un metodo

    Originariamente inviato da albymotard
    Ciao ragazzi volevo sapere come potevo fare a risolvere questo problema:
    Io ho fatto questa classe e vorrei far ritornare al metodo iterator tutti i valori del mio array mediante un ciclo...come posso fare??
    Devo fare questa cosa perchè almeno nel main non devo fare il mi ciclo for each perchè mi basta chiamare il mio metodo
    che???
    prova a spiegarti meglio, perché io non ho capito che vuoi fare
    RTFM Read That F*** Manual!!!

  3. #3
    Credo che tu abbia un po' le idee confuse su quello che vuoi ottenere...
    Una lista va sempre iterata nel momento che ti serve di prendere tutto il suo contenuto.
    Per caso vuoi un metodo che elenchi un ArrayList tutto all'interno di in una stringa o direttamente in un array?

    "Na' sedia te vojo tirà!"

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    106
    no io volevo che il mio metodo restituisse tutti i valori contenuti nel mi arraylist...però mi son accorto che nn è possibile quello che volevo fare...una buona idea è quello di mettere tutto in un array normale e farlo ritornare dal metodo.
    Un ultima cosa, adesso stavo provando la mia classe solo che quando uso il metodo add mi da errore perchè il compilatore vuole che crei un metodo apposta add(int e)...io avevo messo Object come argomento del metodo proprio perchè avrei potuto aggiungere qualsiasi oggetto alla mia struttura...come posso fare? devo per forza fare 2 metodi ADD? uno per gli oggetti e uno per i tipi PRIMITIVI? (ovviamente so che i tipi primitivi non sono oggetti).
    IO ho provato a far cosi ma ancora niente:
    codice:
    public abstract class DataStruct{
    	
    	public DataStruct(){	
    	}
    	
    	public Object search(){
    		return null;
    	}
    	
    	public boolean add(){
    		return true;
    	}
    	
    	public boolean delete(){
    		return true;
    	}
    }
    codice:
    import java.util.*;
    
    public class sArrayList<E> extends DataStruct{
    	
    	int sSize;
    	ArrayList<E> struct;
    	
    	public sArrayList(){
    		struct = new ArrayList<E>();
    		sSize = struct.size();
    	}
    	
    	public sArrayList(int x){
    		struct = new ArrayList<E>(x);
    		sSize = x;
    	}
    	
    	public E search(E e){
    		boolean flag = false;
    		int point = 0;
    		for(int i = 0; i<=sSize; i++){
    			if(e == struct.get(i)){
    				flag = true;
    				point = i;
    				break;
    			}
    		}
    		if(flag == true)
    			return struct.get(point);
    		else
    			return null;
    	
    	}
    	
    	public boolean add(E e){
    		struct.add(e);
    		return true;
    	}
    	
    	public boolean delete(E e){
    		if(search(e) != null){
    			struct.remove(e);
    			return true;
    		}else
    			return false;
    	}	
    }

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    riavvolgiamo, tu vuoi creare una versione personalizzata di arraylist che risponda alla tua interfaccia DataStruct?

    Non chiamare (pena confusione) la classe ArrayList, ogni operazione di add, remove, update deve riflettersi in una chiamata alla add, remove della tua struttura interna.
    Per ottenere tutti gli elementi, l'ideale sarebbe avere una copia della struttura interna, ma devi fare una copia (profonda) di tutto, operazione non ottimizzata (pr ovvie ragioni).

    Poi, se dichiari la struttura tipizzata, devi rispettare la tipizzazione nell'uso (spero sia la questione che hai detto dopo, perché non capisco bene quello che vuoi dire)
    RTFM Read That F*** Manual!!!

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    106
    lasciando perdere quello che dicevo prima (cioè la stampa di tutti gli elementi del mio arraylist) ora il problema e far accettare un qualunque elemento al mi metodo add.
    Quando faccio :
    codice:
    public class Eseguibile {
    
    	public static void main(String[] args) {
    
    		DataStruct struttura = new sArrayList();
    		
    		struttura.add(5);
           }
    }
    il metodo add mi da errore perchè vuole un metodo add che riceva come argomento un intero.
    Nella mia classe sArrayList (ho messo l's iniziale per non mettere il nome uguale alla struttura già esistente) volevo che il mio metodo add(E e) prendesse qualunque cosa in ingresso (quindi int, string , oggetti qualunque).
    Non riesco a capire come devo fare

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Originariamente inviato da albymotard
    lasciando perdere quello che dicevo prima (cioè la stampa di tutti gli elementi del mio arraylist) ora il problema e far accettare un qualunque elemento al mi metodo add.
    Quando faccio :
    codice:
    public class Eseguibile {
    
    	public static void main(String[] args) {
    
    		DataStruct struttura = new sArrayList();
    		
    		struttura.add(5);
           }
    }
    il metodo add mi da errore perchè vuole un metodo add che riceva come argomento un intero.
    Nella mia classe sArrayList (ho messo l's iniziale per non mettere il nome uguale alla struttura già esistente) volevo che il mio metodo add(E e) prendesse qualunque cosa in ingresso (quindi int, string , oggetti qualunque).
    Non riesco a capire come devo fare
    mi sa che non hai letto niente di quello che ho scritto

    E' sconsigliato (pena confusione) dare nomi di strutture tipo ArrayList alle tue classi. Ha senso qualora tu estendi l'ArrayList, ma qui della gerarchia di ArrayList non porti dietro niente, cerca di non usare lo stesso nome (e sArrayList crea ancora confusione).
    Il nome che dai serve a capire in poco tempo quello che fai e come strutturi il codice, quindi deve essere indicativo della realtà che vuoi implementare
    Detto questo, tu ti porti dietro una struttura tipizzata

    ArrayList<E>()
    questo costruttore indica che stai creando un array di Object di una certa dimensione (la mia jvm dice 10), quindi puoi inserire tutto quello che è Object al suo interno.

    int è un Object? NO, Integer è un object.
    Assicurati che ci sia il wrap automatico da int a Integer e aggiungi solo oggetti

    edit

    Codice PHP:
    import java.util.ArrayList;

    public class 
    MyList<E>{
        
        
    int sSize;
        
    ArrayList<Estruct;
        
        public 
    MyList(){
            
    struct = new ArrayList<E>();
            
    sSize struct.size();
        }
        
        public 
    MyList(int x){
            
    struct = new ArrayList<E>(x);
            
    sSize x;
        }
        
        public 
    E search(E e){
            
    boolean flag false;
            
    int point 0;
            for(
    int i 0i<=sSizei++){
                if(
    == struct.get(i)){
                    
    flag true;
                    
    point i;
                    break;
                }
            }
            if(
    flag == true)
                return 
    struct.get(point);
            else
                return 
    null;
        
        }
        
        public 
    boolean add(E e){
            
    struct.add(e);
            return 
    true;
        }
        
        public 
    boolean delete(E e){
            if(
    search(e) != null){
                
    struct.remove(e);
                return 
    true;
            }else
                return 
    false;
        }    
    }

    import java.util.ArrayList;


    public class 
    Prova {

        
    /**
         * @param args
         */
        
    public static void main(String[] args) {
            
    // TODO Auto-generated method stub
            
            
    MyList myList = new MyList() ; 
            
    myList.add(5);
            
    myList.add(new Integer(5));
            
    System.out.println("ciao " );
        }


    questo codice da me funziona (java 1.5)
    così come funziona questo

    Codice PHP:


    public class Prova {

        
    /**
         * @param args
         */
        
    public static void main(String[] args) {
            
    // TODO Auto-generated method stub
            
            
    MyList myList = new MyList() ; 
            
    myList.add(5);
            
    myList.add(new Integer(5));
            
    myList.add("ciao");
            
    System.out.println("ciao " );
        }


    ma questo dà errore in compilazione

    Codice PHP:
    public static void main(String[] args) {
            
    // TODO Auto-generated method stub
            
            
    MyList <Integer>myList = new MyList<Integer>() ; 
            
    myList.add(5);
            
    myList.add(new Integer(5));
            
    myList.add("ciao"); //<--- aggiungo un valore non ammesso
            
    System.out.println("ciao " );
        } 
    RTFM Read That F*** Manual!!!

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    106
    No no avevo letto...figurati...solo che avendo chiamato la mi struttura sArrayList pensavo andasse bene...pero' magari si fa confusione...
    Comunque continua a darmi stamparmi sbagliato....forse sto sbagliando nella classe astratta
    codice:
    
    public class DataStruct<E>{
    	
    	public DataStruct(){	
    	}
    	
    	public E search(E e){
    		return null;
    	}
    	
    	public boolean add(E e){
    		return true;
    	}
    	
    	public boolean delete(E e){
    		return true;
    	}
    	
    
    	
    }
    Seguendo i tuoi esempi facci estendere MyList<E> extends DataStruct<E>

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    106
    Per esempio:
    codice:
    public class Eseguibile {
    
    	public static void main(String[] args) {
    
    		DataStruct<Integer> struttura = new MyList<Integer>();
    		
    		struttura.add(5);
    		struttura.add(4);
    
    			Integer b = struttura.search(4);
    		
    			System.out.print(b);
    
    	}
    
    }
    La stampa mi da null al posto di 4

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    come funziona il tuo metodo search? confronti oggetti con ==, gli oggetti si confrontano con equals!!
    RTFM Read That F*** Manual!!!

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