Visualizzazione dei risultati da 1 a 3 su 3

Discussione: arrayList di oggetti

  1. #1

    arrayList di oggetti

    ciao ragazzi
    devo creare un arrayList di una classe (un oggetto) che contiene due campi di altre due classi con i relativi getters e setters.

    in pratica poi instanziando il metodo get dell'arrayList devo poter accedere ai valori caricati nelle due classi.

    Spero di essere stato chiaro rimango disponibile per ulteriori spiegazioni.

    Ciao.

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    E...quale sarebbe il problema precisamente?

    "instanziando il metodo get dell'arrayList" ...il tuo problema è con la programmazione ad oggetti, o con l'array list?

    Ti faccio un esempio molto banale di come potresti fare (perdona eventuali errori, ma non sono al mio pc e non ho il compilatore sotto mano):

    codice:
    class A  {
      private String attributo1;
      private String attributo2;
      private B b;
    
      A(String attributo1, String attributo2, B b) {
        this.attributo1 = attributo1;
        this.attributo2 = attributo2:
        this.b = b;
      }
    
      String getAttributo1() {
        return attributo1;
      }
      String getAttributo2() {
        return attributo2;
      }
      int getB() {
        return b;
      }
    
      void setAttributo1(String attributo1) {
        this.attributo1 = attributo1;
      }
    
      void setAttributo2(String attributo2) {
        this.attributo2 = attributo2;
      }
    
      void setB(B b) {
        this.b = b;
      }
    }
    La classe A supponiamo abbia gli attributi mostrati sopra; la classe B, per semplificare, supponiamo contenga:
    codice:
    class B {
      private double value;
      B(double value) {
        this.value = value;
      }
    
      double getValue() {
        return value;
      }
      void setValue(double value) {
        this.value = value;
      }
    }
    Non so com'è la tua struttura, ma qualunque sia non cambierà nulla se non il modo in cui accedi (non so se utilizzi l'ereditarietà, se instanzi l'oggetto B da A, ecc.)

    L'array List lo manipoli così (suppongo da una terza classe)
    codice:
    ArrayList<A> array = new ArrayList<A>();
    array.add(new A("primo","secondo",1));
    // ovviamente puoi creare l'oggetto e po passarlo alla funzione
    Per guardare il contenuto di un ArrayList puoi usare un Iteratore, oppure scorrere con un ciclo for in stile for-each
    codice:
    for(A a : array) {
      // a rappresenta, ad ogni ciclo, un oggetto differente appartenente ad array
    se vuoi ottenere un indice
    codice:
    A a = array.get(indice);
    la rimozione è analoga all'aggiunta di un elemento.
    Ovviamente, per ottenere i campi del singolo oggetto dovrai chiamare i metodi su una particolare istanza.

    Spero di essere stato chiaro, in caso contrario, chiedi ^^

  3. #3

    Grazie Mille

    Grazie mille Patrick, quello ceh mi hai descritto corrisponde a quello che ho fatto però c'è un problema... (ovviamente)

    Ad un certo punto cerco di tirare fuori dell'array composto dalle due classi degli elementi...

    Finchè l'operazione avviene nello stesso metodo in cui inserisco gli elementi nell'array tutto ok funziona perfettamente ma se provo ad estrarre gli elementi da un altro metodo non me li da piu'

    allego qui i due metodi:

    codice:
    public void createFranchise()
    {
    
         Scanner x = new Scanner(System.in);
         displayUnassignedOutlets();
         System.out.print("\nPlease choose an Outlet: ");
         int choice = x.nextInt();
         int index = 0;
         boolean found = false;  
         
         System.out.print("\nPhone number: ");
         String phoneNumber = x.next();
         
         System.out.print("\nNumber of operating days: ");
         int numberOfOperatingDays = x.nextInt(); 
         
         System.out.print("\nCategory number: ");
         int category = x.nextInt(); 
         
         outlets.set(choice, new Outlet(phoneNumber, numberOfOperatingDays, category, outlets.get(choice).getName()));
         
         
         try
            {
             while (found == false && index < applicants.size())
                {    
                    if (applicants.get(index).getLicence().equalsIgnoreCase("y") && applicants.get(index).getInitialInvestment() >= 15000 && applicants.get(index).getAge() > 17 && applicants.get(index).getRating() > 5)
                    {   
                       franchises.add(new Franchise(applicants.get(index), outlets.get(choice)));
                       
                       found = true;       
                    }       
                    
                    index++;
                }   
               
            }
         catch(Exception e) 
         {
         Menu y = new Menu();    
         System.out.println("Unexpected error occured"); 
         y.waiting (3000);
         y.mainMenu();
         }   
         
         displayAllFranchises();
         
         index = 0;
         
         while (index < franchises.size())   
            {
                     
                    System.out.print("The outlet: " + franchises.get(index).getOutlet().getName());               
                    System.out.print(" has been assigned to: " + franchises.get(index).getApplicant().getFirstName().toUpperCase()+" "+extractFranchise(index).getApplicant().getLastName().toUpperCase());
                          
               index++;        
            }   
       
    
         pressEnterToContinue();
         
    }
    codice:
     
    
    public void displayAllFranchises()
     {
         int index = 0;
         while (index < franchises.size())   
            {
                     
                    System.out.print("The outlet: " + franchises.get(index).getOutlet().getName());               
                    System.out.print(" has been assigned to: " + franchises.get(index).getApplicant().getFirstName().toUpperCase()+" "+extractFranchise(index).getApplicant().getLastName().toUpperCase());
                          
               index++;        
            }
             
         pressEnterToContinue();   
     }
    boh misteri della fede...

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.