Per questo tipo di trattamenti poteva andare bene anche un TreeSet... certo LinkedHashMap è più performante, ma ti complica la vita in un TableModel.Originariamente inviato da bircastri
Io devo avere degli oggetti identificato da un codice, però ne posso avere massimo uno con lo stesso codice.
TreeSet fa già da sè questa cosa, se gli oggetti contenuti sono progettati bene.Ogni volta che inserisco un nuovo oggetto devo verificare che non esiste un oggetto già inserito con la stessa chiave, questa operazione è un'operazione molto frequente.
Questa non mi è chiara... la modifica di alcuni valori di una JTable non implica una rimozione e un re-inserimento dell'oggetto, ma la modifica dell'oggetto senza toccare nulla della collezione che lo contiene... In buona sostanza, consiste solo nel fare l'override del metodo setValueAt() se si vuole usare l'editing della JTable...Altra operazione, io potrei prendere un oggetto della table, modificare alcuni valori, quindi lo dovrei andare ad aggiornare nella LinkedHashMap, se usavo una lista, ogni volta dovevo andare a fare remove, e add invece così delego tutto alla linkedhashmap.
Questo è sufficiente a capire che non va bene una collezione pre-ordinata (come TreeSet che avevo suggerito prima)... ma non capisco perchè non possa andar bene un ArrayList... l'ordine in cui vengono inseriti gli oggetti lo puoi decidere tu e uno swap è banale.Ovviamente non ho optato per una HashMap semplice perchè l'ordine di inserimento lo devo decidere io e non deve aggiornare da solo in base alla Chiave.
Non è sbagliato di per sé... si può usare una struttura dati qualunque, però si deve cercare di trovare un compromesso fra tutte le operazioni che si desidera poter lasciare all'utente. LinkedHashMap è piuttosto rigido per quanto riguarda gli spostamenti degli elementi (e l'ordine con cui mostrare gli elementi lo decide comunque lui a priori). Se, però, questa struttura dati ti agevola nella maggior parte delle operazioni, va bene... vuol dire che il grosso del lavoro lo dovrai fare solo per lo swap.Ora detto questo, secondo te è sbagliato usare la linkedHashMap???? al posto della lista?
Ciao.![]()