Is there a simple way to create a 2 element tuple in java? I'm thinking of making a class and declaring the variables as final. Would this work?
Asked
Active
Viewed 1.6k times
6
-
1`final` variables will work fine. Check out this question for a generic Tuple class: http://stackoverflow.com/questions/2670982/using-tuples-in-java – Marc Baumbach Jan 29 '13 at 03:17
-
*"Would this work?"* What happened when you *tried it?* – Andrew Thompson Jan 29 '13 at 03:26
3 Answers
7
This is as simple as it gets:
public class Pair<S, T> {
public final S x;
public final T y;
public Pair(S x, T y) {
this.x = x;
this.y = y;
}
}

duffymo
- 305,152
- 44
- 369
- 561
2
Yes. Best practices would be to make the fields private and provide getters for them.
For many people (including [most of?] the language designers), the idea of a tuple runs counter to the strong typing philosophy of Java. Rather than just a tuple, they would prefer a use-case-specific class, and if that class only has two getters and no other methods, so be it.

yshavit
- 42,327
- 7
- 87
- 124
0
I'd prefer the variables private with getters, no setters. Set in the constructor, obviously. Then implement iterable, maybe.

anthropomo
- 4,100
- 1
- 24
- 39
-
Iterable likely isn't appropriate. `Iterable
` is for something with some number of elements, all of type `T`. A tuple is, in general, a heterogeneous structure (its two elements may be of different types). – yshavit Jan 29 '13 at 03:21