View Full Version : [JAVA] LinkedList: farmi ritornare l'index dell'oggetto cercato se...
Ciao,
io ho una LinkedList compasta da int e da char.
se per esempio voglio avere l'index del char '+' come devo fare?
int i=s.indexOf('+');
questo ritorna errore.. perchè ovviamente non riconosce il metodo in quanto l'indexOf della linked list accetta come parametro un Object.. non un char...
come fare? :what:
^TiGeRShArK^
11-02-2006, 12:24
import java.util.LinkedList;
public class Prova {
public Prova() {
LinkedList l = new LinkedList();
Object ch = '-';
Object ch1 = '+';
l.add(ch);
l.add(ch1);
System.out.println(l.indexOf(ch1));
}
public static void main(String[] args) {
Prova prova = new Prova();
}
}
Non funziona come fai tu perchè l'indice della lista è il riferimento dell'oggetto che gli passi....
se ad esempio fai l.add('+'); il tuo programma creerà implicitamente un oggetto contenente il carattere + e lo passerà alla lista....
così facendo non potrai + accedere a quell'oggetto col metodo indexOf in quanto non hai piu' a disposizione il riferimento a quell'oggetto...
come ho fattio io invece, creando esplicitamente l'oggetto, mi mantengo il riferimento e lo posso passare alla lista ke quindi mi restituirà la posizione corretta dell'oggetto all'interno della stringa.
Un consiglio però... non so cosa devi fare, ma di solito quando si ha a che fare con manipolazioni di caratteri si utilizzano le stringhe, gli stringBuffer o gli StringTokenizer...
Ad esempio avrebbe avuto molto piu' senso il tuo codice scritto in questo modo IMHO:
public class Prova {
public Prova() {
String s = "";
s += '-';
s += '+';
System.out.println(s.indexOf('+'));
}
public static void main(String[] args) {
Prova prova = new Prova();
}
}
devi wrappare l'int o il char in un oggetto. usa la classe Integer o Char, se ti puoi permettere che i valori siano immutabili, se no createne una te.
se usi java 1.5.0, allora ti puoi permettere questo
//autoboxing, cioè i tipi primitivi vengono automaticamente wrappati, quand'è necessario, nei rispettivi oggetti (boolean-->Boolean, byte-->Byte, etc...)
LinkedList<Object> asf=new LinkedList<Object>();
asf.add(234); //boxing con int
asf.add('s'); //boxing con char
asf.indexOf('s'); //boxing con int
asf.indexOf(234); //boxing con char
LinkedList<Integer> asd=new LinkedList<Integer>();
asd.add(3452); //boxing con int
int i=asd.get(0); //unboxing con int
^TiGeRShArK^
11-02-2006, 13:28
devi wrappare l'int o il char in un oggetto. usa la classe Integer o Char, se ti puoi permettere che i valori siano immutabili, se no createne una te.
ah.. fiko :D
praticamente così memorizza all'interno della linkedlist direttamente il valore del tipo primitivo piuttosto che il riferimento, right?
ma cmq nel suo caso se deve manipolare caratteri mi sembra più facile utilizzare i metodi relativi alle stringhe .... :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.