Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    C'è List. E' una classe astratta rappresentante una lista di dati.
    Le sue implementazioni sono tutte non thread-safe e tutte di lunghezza indefinita come dici tu e ce ne sono 2: l'ArrayList (come un array, anche perchè è rappresentato con un array in memoria) e la LinkedList che è la classica double linked list.
    Tutt'e due sono iterabili tramite .get(int index) oppure il ListIterator che ti permette di andare sia avanti che indietro.

    Per te credo che l'ArrayList sia sufficiente.
    lolide
    Java Programmer

    Informati

  2. #2
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Ti basta un ArrayList di Object:

    codice:
    ArrayList<Object> lista=new ArrayList<Object>();
    // esempio 1: vuoi inserire un intero
    lista.add(0,new Integer(5));
    // esempio 2: vuoi inserire una stringa
    lista.add(0,new String("ciao"));

  3. #3
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Originariamente inviato da pinsicchio
    c'è un modo per stampare la lista in una riga, senza aggiungere tutti gli elementi ad una stringa?
    quello che in python sarebbe:
    >>>LISTA=[1,2,3,4,5]
    >>>print LISTA
    [1,2,3,4,5]

    In python il for può essere fatto sugli elementi della lista, se non sbaglio l' equivalente di :
    codice:
    print LISTA
    E':
    codice:
    for i in LISTA:
        print i
    E qua la cosa è simile perchè devi iterare su tutti gli indici, a differenza che qua i non è il valore ma l' indice:
    codice:
    int i;
    for(i=0;i<lista.size();i++)
        System.out.print(lista.get(i));
    Ma è tutta roba che trovi nella documentazione:
    http://docs.oracle.com/javase/1.4.2/...ArrayList.html

  4. #4
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Originariamente inviato da pinsicchio
    allora...
    la seconda li stampa uno dopo l' altro ( a meno di non mettere print i, in quanto la virgola "fa aspettare").
    Un' istruzione del tipo:

    codice:
    System.out.println(",");
    Risolve la cosa.Stampa una stringa, puoi scegliere come separare i vari elementi (istruzione da mettere nel for ovviamente).

    inoltre se uso size eclipse dice che è dismesso e mi dice di usare altre cose.
    Devi essere preciso, cosa ti dice esattamente?

    con ArrayList posso inserire oggetti di vario tipo nella stessa lista? e perché ogni volta devo dire "new tipodato"? scusate le domande, sono ancora agli inizi...
    E' chiamata istanziazione contestuale e serve ad istanziare un tipo di dato perchè serve farlo sul momento.In questo caso avrei anche potuto dire:

    codice:
    lista.add(0,5);
    Ma 5 è un tipo primitivo, con altri tipi non era possibile.
    Il garbage collector si occupa di liberare la memoria quando serve, per cui l' istanziazione contestuale non rischia di far esaurire la memoria.

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    Originariamente inviato da lolide
    C'è List. E' una classe astratta rappresentante una lista di dati.
    Le sue implementazioni sono tutte non thread-safe e tutte di lunghezza indefinita come dici tu e ce ne sono 2: l'ArrayList (come un array, anche perchè è rappresentato con un array in memoria) e la LinkedList che è la classica double linked list.
    Tutt'e due sono iterabili tramite .get(int index) oppure il ListIterator che ti permette di andare sia avanti che indietro.

    Per te credo che l'ArrayList sia sufficiente.
    List è un'interfaccia, non una classe astratta, e ha ben più di due implementazioni, alcune delle quali sono thread-safe.

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    3
    io necessito di tutto nella stessa riga
    seguendo la logica che hai seguito basta che togli ln da println

    int i;
    for(i=0;i<lista.size();i++){
    System.out.print(lista.get(i));
    System.out.print(", ");
    }
    System.out.println(); //per andare a capo una volta stampata la lista

    oppure dentro il ciclo:
    System.out.print(lista.get(i) +", ");

    The method size() for the type Component is deprecated ( non dismesso )
    In pratica ti sta dicendo che il metodo size() della classe che stai usando per dichiarare il tipo della variabile lista è deprecato, cioè è possibile continuare a utilizzarlo normalmente, ma non è garantito che questo metodo sia disponibile nelle future versioni di java.
    Di che tipo hai dichiarato la variabile lista?

  7. #7
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Se vuoi stampare la lista uguale identica a come viene stampata in python, tanto per esercitarti con le stringhe (oltre alla soluzione di emil), puoi fare:

    codice:
    ArrayList<Object> lista=new ArrayList<Object>(); // assicurati che il riferimento sia di
    // tipo ArrayList<Object>
    String buffer=new String("[");
    int i;
    for(i=0;i<lista.size()-1;i++)
        buffer+=lista.get(i)+",";  // += operatore di concatenazione
    buffer+=lista.get(lista.size()-1);  // l' ultimo lo aggiungo separatamente
    // perchè non bisogna aggiungere la virgola
    buffer+="]";
    System.out.println(buffer);
    Comunque se il metodo è deprecato ti da solo un warning, non è un errore.
    Al limite prima del metodo main aggiungi @SuppressWarnings("deprecation"):

    codice:
    @SuppressWarnings("deprecation")
    // annotazione: "dice" al compilatore di non generare avvisi se si usano metodi deprecati
    public static void main(String[] args)
    {
        // metodo
    }

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Originariamente inviato da pinsicchio
    Grazie mille a tutti
    @emil tipo List, comunque grazie alle vostre soluzioni è tutto ok
    (grazie per il +=, ma fortunatamente "abbreviazioni" come questa sono uguali a quelle in python )
    @kaamos non ci ho capito un granché ma grazie anche a te
    Kaamos si riferisce ad uno dei concetti base di java, le interfacce. Se devi continuare a lavorare in java ti consiglio di documentarti bene in merito, perché viene largamente usato e saperlo sfruttare a volte ti torna utile.
    Oltretutto bisognerebbe anche conoscere la differenza tra classe astratta e java (che non è banale) e che implica limitazioni non indifferenti
    RTFM Read That F*** Manual!!!

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Originariamente inviato da pinsicchio
    ho appena preso un bel manuale, in ogni caso non serve essere così "brutali", tutti abbiamo imparato e tutti siamo partiti senza molte conoscenze...
    La mia intenzione non era offenderti, è vero che nessuno sa molto all'inizio, il mio era un invito ad andare oltre perché capire bene quei concetti fidati ti aiuta tantissimo quando farai cose più complesse.

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