Los corso appello di esame non capii una cosa: chiedeva un iteratore a un lista di oggetti definito come oggetti <T>. Non ho capito questo oggetto come si definisca e l'iteratore.
Los corso appello di esame non capii una cosa: chiedeva un iteratore a un lista di oggetti definito come oggetti <T>. Non ho capito questo oggetto come si definisca e l'iteratore.
Magari usando titoli che siano conformi al Regolamento (che ti invito a leggere)...
Correggo io.
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Ma una lista implementata da te? Perché nelle classi del "collections framework" di Java l'iteratore è già implementato.Originariamente inviato da AR64S-H
Los corso appello di esame non capii una cosa: chiedeva un iteratore a un lista di oggetti definito come oggetti <T>. Non ho capito questo oggetto come si definisca e l'iteratore.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Lìesercizio se non ricordo male chiedeva di creare un metoto iteratore che prendesse una variabile booleana e iterasse su <T>. Se la boleana era true iterava col normale iterator() altrimenti doveva interare all'inverso. Ma comunque continuo a non capire il tipo <T> e come fare questa lista
iterator<T> sarebbe come se fosse Iteretor<String> la T corrisponde al Tipo: String integer ecc.
ecco quello ke vorrei capire e come lo devo usare. Nel senso se io faccio una semplice List va bene ma qui lo devo usare su una Lista Linkata creata tramite listnode, oltre a creare listaastratta che da i metodi. Ora io non riesco a creare una lista a questo oggetto creando una lista linkata con un iteratore simile
ecco come funziona
List<String> l = new LinkedList<String>();
l.add(0, "ciao");
l.add(1, "C");
Iterator i = l.iterator();
while(i.hasNext()) {
String s = (String) i.next();//devi castare a string
System.out.println(s);
}
//invece
Iterator<String> j = l.iterator(); // la lista restituisce un Iterator<String>
while(j.hasNext()) {
String a = j.next(); // Non è necessario ricorrere al casting
System.out.println(a);
Scusa mi sonospiegato male. Lo so come funziona l'iterator. Quello che chiedeva l'esercizio era creare una classe astratta listaastratta che contegna i metodi da implementare in lista linkata (che deve essere una lista di oggetti <T> creata attraverso nodi che abbiano sia il prec che il succ puntatore. E tramite lista linkata creare un metodo iteratore che riceve un booleano
iterator(boolean b){} che se prende true restituisce iterator() altrimenti deve iterare la lista all'inverso.
Ecco una "mia" implementazione di una lista linkata con tanto di iteratore, che non ha nulla a che vedere con le altre collezioni del "collections framework" di Java.
Come tale ovviamente la "mia" lista è altamente inferiore a quelle che si trovano nel framework: non è completa (per brevità ho messo solo add() ), non ho preso in considerazione l'accesso concorrente, non implementa List<E> o Collection<E> (quindi non è utilizzabile insieme al resto del framework) e l'iteratore che ho realizzato non è nemmeno Fail-Fast.
Pertanto faccio notare che la "mia" lista è da vedere solamente come un esempio banale/basilare su come gestire una lista linkata e un iteratore!!
codice:import java.util.*; public class TestLista { public static void main (String[] args) { MiaLista<String> list = new MiaLista<String> (); list.add ("prova"); list.add ("di"); list.add ("una"); list.add ("lista"); for (String s : list) System.out.println (s); } } class MiaLista<E> implements Iterable<E> { private Nodo<E> head; private Nodo<E> tail; public void add (E e) { Nodo<E> n = new Nodo<E> (e); if (tail != null) tail = tail.next = n; else head = tail = n; } public Iterator<E> iterator () { return new Iterator<E> () { private Nodo<E> node = head; public boolean hasNext () { return node != null; } public E next () { if (node != null) { E ret = node.element; node = node.next; return ret; } else throw new NoSuchElementException (); // = nessun elemento } public void remove () { throw new UnsupportedOperationException (); // = non supportato } }; } private static class Nodo<T> { private T element; private Nodo<T> next; public Nodo (T element) { this.element = element; } } }
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet