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

Discussione: Lista di array

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    143

    Lista di array

    Ho una classe che vari metodi che cercano un elemento in un array. Poi ho un main che prova questi metodi con un menu ed adesso devo creare un'altra classe che, dati degli array e degli elementi da cercare predefiniti, provi ogni metodo con ogni array, conti quante volte è stato applicato quel metodo e su quale array.
    Ho pensato di creare:
    - una lista di array che inserisco io a mano
    - una lista di elementi da cercare
    - una lista che tenga conto del numero del menu corrispondente al metodo
    Poi scorrere tutte le liste con un indice uguale ed applicare quel determinato metodo a quell'array con quell'elemento da cercare.
    Come idea penso che possa funzionare ma non ho idea di come scrivere il codice. Mi aiutate?
    Come si scrive una lista di array?

    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755

    Re: Lista di array

    Originariamente inviato da vfldj
    Come si scrive una lista di array?
    Così , prendo come esempio le LinkedList ma lo stesso puoi fare con le ArrayList o altro:

    codice:
    LinkedList<T []> l = new LinkedList<T []> ();
    dove T è il tipo di oggetto..
    Un esempio pratico con ad esempio array di String è:

    codice:
    LinkedList<String []> l = new LinkedList<String []> ();
    e poi man mano aggiungi gli array nel modo:

    codice:
    l.add (new String [] {"ciao" , "miao" , "arrr"});

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    143
    Grazie per la risposta.
    Ho creato una lista di array ed un array di interi. Gli elementi dell'array a sono quelli che devono essere cercati all'interno degli array della lista list.
    codice:
    		LinkedList<int[]> list = new LinkedList<int[]>();
    		list.add (new int[] {0, 1, 5, 8, 10, 11});
    		list.add (new int[] {2, 10, 15, 17, 18, 22, 25, 30});
    		list.add (new int[] {0, 2, 15});
    
    		int[] a = {1, 0, 5};
    		
    		int[] case = {0, 1, 2};
    		
    		for(int i = 0; i < 3; i++) {
    			?
    		}
    Giusto?
    Ora se io so che il
    codice:
    case 0
    del menu nel main corrisponde al metodo ricercaInArray mentre il
    codice:
    case 1
    corrisponde al metodo ricercaInArrayRicorsivo, come faccio a ciclare sia la lista di array che l'array a in modo tale da applicare sia il metodo ricercaInArray che ricercaInArrayRicorsivo ai vari array ed ai vari elementi da cercare?
    Mi spiego meglio: voglio che con un ciclo venga applicato il metodo ricercaInArray passandogli come parametri il primo array della lista list e l'elemento a[i] ecc..

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    Originariamente inviato da vfldj
    Grazie per la risposta.
    Ho creato una lista di array ed un array di interi. Gli elementi dell'array a sono quelli che devono essere cercati all'interno degli array della lista list.
    codice:
    		LinkedList<int[]> list = new LinkedList<int[]>();
    		list.add (new int[] {0, 1, 5, 8, 10, 11});
    		list.add (new int[] {2, 10, 15, 17, 18, 22, 25, 30});
    		list.add (new int[] {0, 2, 15});
    
    		int[] a = {1, 0, 5};
    Giusto?
    fin qui direi di si

    Originariamente inviato da vfldj
    Ora se io so che il
    codice:
    case 0
    del menu nel main corrisponde al metodo ricercaInArray mentre il
    codice:
    case 1
    corrisponde al metodo ricercaInArrayRicorsivo, come faccio a ciclare sia la lista di array che l'array a in modo tale da applicare sia il metodo ricercaInArray che ricercaInArrayRicorsivo ai vari array ed ai vari elementi da cercare?
    Mi spiego meglio: voglio che con un ciclo venga applicato il metodo ricercaInArray passandogli come parametri il primo array della lista list e l'elemento a[i] ecc..
    Non so come hai implementato i metodi "ricercaInArray" e "ricercaInArrayRicorsivo" quindi non posso dire niente..ma posso dirti che puoi scorrere la lista in diversi modi:
    -con ciclo "for" (solitamente è quello più intuitivo poichè simile a come si procede con gli array):
    codice:
    for (int i=0;i<list.size ();i++) {
         ricercaInArray (list.get (i));
    }
    -oppure puoi procedere tramite "iteratore":
    codice:
    Iterator it = list.iterator ();
    while (it.hasNext ()) {
        ricercaInArray (it.next ());
    }

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    143
    codice:
    LinkedList<int[]> list = new LinkedList<int[]>(); 
    list.add (new int[] {0, 1, 5, 8, 10, 11}); 
    list.add (new int[] {2, 10, 15, 17, 18, 22, 25, 30}); 
    list.add (new int[] {0, 2, 15}); 
    
    int[] a = {1, 0, 5}; 
    
    int[] menu = {0, 1, 2}; 
    
    int cont = 0; 
    
    for (int i = 0; i < list.size(); i++) { 
        RicercaBinaria.ricercaInArray(a[i], list.get(i)); 
        cont++; 
    }
    Così non funziona..

    I metodi sono tutti così più o meno, cambia il tipo di ritorno oppure hanno qualche controllo in più..
    codice:
    	public static int ricercaInArray(int x, int[] a) {
    		int inf = 0;
    		int sup = a.length - 1;
    		if(sup == 1 || x < a[0] || x > a[sup])
    			return -1;
    		while(inf <= sup) {
    			int i = (inf + sup) / 2;
    			if(x < a[i])
    				sup = i - 1;
    			if (x > a[i])
    				inf = i + 1;
    			else {
    				return i;
    		}
    		return -1;
    	}

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    Originariamente inviato da vfldj
    codice:
    int cont = 0; 
    
    for (int i = 0; i < list.size(); i++) { 
        RicercaBinaria.ricercaInArray(a[i], list.get(i)); 
        cont++; 
    }
    a cosa ti serve "cont"??

    Comunque devi modificare in:
    codice:
    int pos;
    for (int i = 0; i < list.size(); i++) { 
          for (int j=0;j<a.size;j++) {
                pos = RicercaBinaria.ricercaInArray(a[j], list.get(i));
                System.out.println ("Ho cercato " + a [j] + " nell'array " + i + " e l'ho trovato in posizione " + pos);
          }
    }
    Così cerchi ciascun elemento di "a" in ciascun array della lista..probabilmente ci sarebbero modi più veloci per effettuare le ricerche ma tralasciamo
    Ps. non ho controllato la correttezza del metodo di ricerca , prendo per buono ciò che hai scritto tu.


  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    143
    Grazie! Lo provo subito
    cont mi serve perchè devo contare quante volte provo quel determinato metodo

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    allora "cont++" mettilo dentro il "for" interno..se tutto è corretto alla fine dovresti ottenere cont=a.length*lista.size ()


  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    143
    Mi da problemi nella classe principale dove ho sviluppato i metodi..

  10. #10
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da vfldj
    Mi da problemi nella classe principale dove ho sviluppato i metodi..
    Interessante. Adesso spolvero la sfera di cristallo, così da poterti dare una mano
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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.