2016-10-12 5 views
0

Ich übersetze etwas Code von Standard C++ nach Java. Mehrere Orte nutzenJava-Paar entspricht C++

std::pair<T1,T2> 

genau

std::pair<Date,double> 

Gibt es einen Standard idiomatische Weise einen parametrisierte Paartyp in Java zum Ausdruck bringen? Als ein Beispiel habe ich

einen benutzerdefinierten Typ verwenden
class Observation { 
    LocalDate date; 
    double value; 
} 

ich anderen Fällen auch, wo zwei oder drei Dinge müssen von einer Funktion zurückgegeben werden. In anderen Sprachen würde ich wahrscheinlich Paare, Tripel und andere Tupeleinheiten verwenden.

Es macht mir nichts aus, die benötigten kleinen Klassen zu machen, aber ich würde gerne wissen, ob ich irgendwo eine Java-Funktion verpasse.

Vielen Dank im Voraus für Ihre Kommentare.

(P. S. Ich bin mir ziemlich sicher, dass dies meine erste Frage ist immer auf S. O. gestellt)

+0

Danke. Ich glaube, dass ich diese Frage irgendwie vermisst habe, und es ist definitiv dieselbe Frage. Abgesehen davon stimme ich dieser Antwort nicht zu, dass es eher eine gute Sache ist, kleine Klassen als Semantik zu machen - Paare oder andere Tupel zu verstecken. Trotzdem, vielen Dank und es beantwortet meine Frage vollständig und richtig. –

+0

Java lässt dies bewusst aus. Der Punkt ist, dass Sie eine richtige Klasse mit sinnvoll benannten Feldern erstellen. –

+0

Ich verstehe die Absicht der Java-Designer, mich zu zwingen, eine Klasse mit zwei benannten Feldern zu machen, und dass, wenn in Rom, sollte man tun, wie die Römer tun. Ich wollte nur sicherstellen, dass ich tatsächlich so vorgehe wie die Römer. Ich stimme diesem absichtlichen Zwang nicht zu, und wenn es richtig ist, muss man zustimmen, dass diejenigen außerhalb Roms, zum Beispiel C++, Go, Scheme, Scala, Haskell und Python-Programmierer, eine schlechte Sprachdesign-Entscheidung treffen oder Tupel. Angesichts der Tatsache, dass Java jetzt lambdas hat, werde ich nicht überrascht sein, Tupel eines Tages zu sehen. –

Antwort

1

Es gibt nichts in der Standard-Java-API, aber verschiedene Bibliotheken von Drittanbietern haben pair-Implementierungen. Beispielsweise. this one in Apache Commons Lang.

+0

Vielen Dank auch. Dies ist eine praktikable Sache, sowie einfach eine einfache Paar-Klasse selbst zu implementieren, aber ich mache nur das Standard-Java "mach ein bisschen Klasse", anstatt eine Abhängigkeit zu haben. –