|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
...Java...ordinare ArrayList...
...ho necessità di ordinare un ArrayList...tale lista è composta da oggetti uguali...ogni oggetto presenta diversi valori tra i quali una variabile long per la quale vorrei sortare la stessa lista...come potrei muovermi?...
...grazie ciao... |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
molto semplice.
fai la tua classe cosi: public MiaClasse implements Comparable<MiaClasse>//utilizzo dei generici public int compareTo(MiaClasse mioOggetto){ qui stabilisci le regole di ordinamento....} per ordinare l' array se non ti viene espressamento chiestto di implementare un tuo metodo sfrutti quello offerto gratis dalla classe Arrays Arrays.sort(ArrayList tuaLiista). |
![]() |
![]() |
![]() |
#3 |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
...ms...sembra interessante...ma l'int in restituzione rappresenterebbe l'oggetto con cui verrà riordinata la lista?...nel mio caso il long?...
...grazie ciao... |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Vedere la documentazione della interfaccia Comparable.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Questo solo se si ha un array. Per le collezioni List si usa Collections.sort()
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Quote:
ho fatto per sicurezza anche una prova ed effettivamente per ArrayList serve Collections. questo codive pero da il solito unsafe import java.util.*; public class PA{ public static void main(String[]args){ ArrayList a=new ArrayList(); a.add(1); a.add(2); a.add(-2); Collections.sort(a); for(int i=0;i<a.size();i++) System.out.println(a.get(i));}} Note: C:\Users\A\Documents\PA.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. non capisco però il perchè dato che non si utilizzano i generici. inoltre come si esegue il comando -Xlint..da textpad nn ho trovato come lanciarlo. |
|
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Da lì saltano fuori i warning di "unchecked". Lancia a mano .... (non conosco textpad).
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
quindi bisognerebbe utilizzare i generici per evitare il problema?Solitamente però quei messaggi compaiono proprio andando a utilizzare i generici ad esempio quando si legge quacosa da file.
quale è la sintassi per lanciare quel comando da dos? |
![]() |
![]() |
![]() |
#9 | ||
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Comunque quei warning si possono sopprimere (con una annotazione) ma se il tuo codice non usa le nuove funzionalità specifiche di Java 5 puoi anche compilare con -source 1.4 Quote:
javac -Xlint:unchecked blabla.java
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
||
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Inserendoi generici si risolve. a rigurdo una domanda
assodato il perchè dell'avviso in questo caso anallizziamo un' altro: ArrayList<String> a=(ArrayList<String>)ois.readObject() in questa seconda condizione dipende dal fatto ce il compilatore non è sicuro che a tempo di esecuzione potra eseguire il Cast ad un' ArrauList di String...ciò è il generico a dare il problema |
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Quando tu fai: ArrayList<String> miaList = new ArrayList<String> (); a runtime nell'oggetto referenziato da 'miaList' NON c'è alcuna informazione sul fatto che è un ArrayList di tipo <String>. È solo un ArrayList e basta. Pertanto a runtime non posso sapere se miaList è un ArrayList di <Integer> o di <String> o altro. Da lì il warning sul cast.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Si ho letto un po di cose per cui se ho capito bene il warnng si verifica
-istanziando una struttura dichiarate generica del framework utilizzando i raw type esempio: ArrayList=new ArrayList(); lista.add(); oppure facendo un cast di un tipo generico ArrayList<String>=(ArrayList<Metodo>)metodo e cio è dovuto all' arasure con cui sono gestiti i generici |
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Beh, ci sono anche altri casi in cui, a causa dei generics, si ha un warning. Altre cose invece non si possono fare con i generics e allora si ottiene un errore in compilazione.
Comunque i generics studiali pure con calma ma bene ..... queste cose che abbiamo detto qui sono solo la punta dell'iceberg. Aspetta a vedere i bounds, type inference, wildcard, wildcard capture e varie altre cose .... ![]()
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
una cosa nn mi è chiarissima,se analizziamo il secondo caso ovvero dovuto all' erasure:
ArrayList<String> a=(ArrayList<String>) metodo se a run-time da metodo viene fuori una arrayList non di stringhe dato che ciò nn puo essere garantito cosa avviene? |
![]() |
![]() |
![]() |
#15 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
![]()
__________________
![]() |
|
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
ma dopo la compilazione i generici alla fine spariscono..sostituitida dei cast a quanto ho capito.
|
![]() |
![]() |
![]() |
#18 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Nel caso di un metodo come ois.readObject() è tutt'altro che garantito, visto che restituisce un Object.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#19 |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
![]() e si che la accendiamo... se io scrivo: Codice:
ArrayList<Integer> a = null; ArrayList<String>=(ArrayList<Integer>)a; ![]()
__________________
![]() Ultima modifica di ^TiGeRShArK^ : 27-06-2007 alle 08:27. |
![]() |
![]() |
![]() |
#20 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
ora ho capito che indendeva con metodo ![]() leggendo questo: Codice:
ArrayList<String>=(ArrayList<Metodo>)metodo ![]()
__________________
![]() |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:18.