Quale classe avrebbe funzionato meglio per una lista non ordinata di coppie? Prenderò un paio di coppie (float, short) e dovrò essere in grado di eseguire semplici calcoli matematici (come moltiplicare la coppia per restituire un singolo float, ecc.). List accetta solo un argomento e HashMap non consente duplicati (per quanto ne so). qualche idea?Creazione di un elenco di coppie in java
risposta
È possibile utilizzare la classe Entry<U,V>
che HashMap
usi, ma ti verrà bloccato con la sua semantica di getKey
e getValue
:
List<Entry<Float,Short>> pairList = //...
La mia preferenza sarebbe quella di creare il proprio semplice Pair
classe:
public class Pair<L,R> {
private L l;
private R r;
public Pair(L l, R r){
this.l = l;
this.r = r;
}
public L getL(){ return l; }
public R getR(){ return r; }
public void setL(L l){ this.l = l; }
public void setR(R r){ this.r = r; }
}
Quindi ovviamente creare un List
utilizzando questa nuova classe, ad esempio:
List<Pair<Float,Short>> pairList = new ArrayList<Pair<Float,Short>>();
È inoltre possibile sempre fare un List
s di List
s, ma diventa difficile far rispettare dimensionamento (che si hanno solo le coppie) e si sarebbero tenuti, come con gli array, di avere a digitare coerente.
Utilizzare un elenco di istanze di classe personalizzati. La classe personalizzata è una sorta di coppia o coordinata o qualsiasi altra cosa. Poi basta
List<Coordinate> = new YourFavoriteListImplHere<Coordinate>()
Questo approccio ha il vantaggio che rende soddisfare questo requisito "compiere semplici operazioni matematiche (come moltiplicare la coppia insieme per restituire un unico galleggiante, ecc)" pulito, perché la classe personalizzata può avere metodi per qualunque la matematica che devi fare ...
Suona come è necessario creare la propria classe coppia (vedi discussion here). Poi fare una lista di quella classe coppia si è creato
Simile a quello che Mark E ha proposto, devi venire con il proprio. Solo per aiutarti un po ', c'è un articolo ordinato http://gleichmann.wordpress.com/2008/01/15/building-your-own-literals-in-java-tuples-and-maps/ che ti dà un modo davvero accurato di creare tuple e mappe che potrebbero essere qualcosa che potresti voler prendere in considerazione.
Se volete molteplicità, si può mettere in mappa che mappa coppia a ammount. In questo modo ci sarà solo una coppia di valori dati, ma può rappresentare più occorrenze.
Quindi se si hanno molti valori repeatet e desidera eseguire alcune operazioni su tutti i valori, è possibile risparmiare molti calcoli.
solo fissare qualche piccolo errore nel codice di Mark Elliot:
public class Pair<L,R> {
private L l;
private R r;
public Pair(L l, R r){
this.l = l;
this.r = r;
}
public L getL(){ return l; }
public R getR(){ return r; }
public void setL(L l){ this.l = l; }
public void setR(R r){ this.r = r; }
}
- 1. Creazione di un elenco distinto in C#
- 2. Serializzazione di un elenco di coppie chiave/valore in XML
- 3. Java: creazione di oggetti con coppie chiave/valore?
- 4. disimballaggio un elenco/tupla di coppie in due elenchi/tuple
- 5. Creazione del refactoring di un elenco con java 8 stream
- 6. Composizione di un elenco di tutte le coppie
- 7. Creazione di un elenco in EL
- 8. Creazione di un elenco vantaggio in R
- 9. Creazione di un elenco con elemento ripetuto
- 10. Elenco delle coppie di parole idiomatiche
- 11. Ordinamento di un elenco in parallelo senza creazione di un array temporaneo in Java 8
- 12. Coppie di stringhe in ordine inverso in un elenco di oltre un milione di stringhe?
- 13. usando Python riduci su un elenco di coppie
- 14. Rimozione coppie duplicate di un elenco <object>
- 15. Rimozione chiave valori coppie da un elenco di dizionari
- 16. Come ordinare un elenco di coppie <String, Integer>?
- 17. Come memorizzare un array di coppie in java?
- 18. Creazione di un Makefile Java
- 19. Creazione di un elenco filtrabile con RxJS
- 20. Creazione di un grafico in java
- 21. Creazione di un timestamp univoco in Java
- 22. Creazione di un generatore di "Chiave di attivazione" in JAVA
- 23. Creazione di un vettore da elementi di elenco in R
- 24. Creazione di un elenco di elenchi in C#
- 25. Creazione di un elenco di simboli in latex
- 26. Creazione di un elenco distinto di tipo personalizzato in C#
- 27. Creazione di un elenco di divisori in Haskell
- 28. Creazione di un elenco di oggetti in Python
- 29. Python: frequenza di conteggio di coppie di elementi in un elenco di liste
- 30. Ordinamento di un elenco collegato in Java
Ma mi sarebbe sicuramente solo fare la classe segnaposto e quindi aggiungere le istanze di esso ad un list-- chiamare le cose col loro nome ... –
Diamo dire che stavo per farlo senza una nuova classe. Sto pensando di eseguire solo due elenchi del tipo appropriato. Perché si lamenta quando faccio: elenco privato floatList = new List (); ma non quando esco dall'operatore di assegnazione e ho solo Elenco privato floatList; ? Ha ancora bisogno di essere istanziato, vero? –
V1rtua1An0ma1y
@ V1rtua1An0ma1y: poiché 'List' è un'interfaccia, è necessaria un'implementazione, come, ad esempio,' ArrayList' o 'LinkedList'. –