我希望有一个包含2项元组的数组列表,其中包含enum
值和long
值。
我很好奇我是否需要为此创建POJO
然后创建该类的数组列表,或者是否有更简单的方法,如ArrayList<EnumClassName, long>
。
如果第二个是可能的,那么我们将非常感谢如何声明和添加项目。
答案 0 :(得分:3)
第二种选择是不可能的。 ArrayList只有一个模板参数。
你可以做的是:
class MyClass {
EnumClassName name;
long l;
...
// getters and setters
}
然后声明你的数组列表:
List<MyClass> list = new ArrayList<MyClass>();
答案 1 :(得分:1)
如果您真的想要获得Tuple
课程,可以使用类似
ArrayList<Map.Entry<EnumClassName, Long>> list; // by the way, you cannot use primitive types, such as long as generic parameters, that's why Long instead of long
用法是:
int index = ...//some index
EnumClassName e = list.get(index).getKey();
long l = list.get(index).getValue(); // autounboxed value
但Java正确的方法是为它创建一个新类:
public class MyTupleName { // also, you should use more convenient name for the case
EnumClassName e;
long l; // names are also the subject to change alongside with getters
public MyTupleName (EnumClassName e, long l) {
this.e = e;
this.l = l;
}
public EnumClassName getE() {
return e;
}
public long getL() {
return l;
}
}
用法是:
ArrayList <MyTupleName> list = ...
int index = ...
MyTupleName tuple = list.get(index);
EnumClassName e = tuple.getE();
long l = tuple.getL();
答案 2 :(得分:1)
Apache Commons有ImmutablePair,这就是你想要的。您可以将其用作
ArrayList<ImmutablePair<EnumClass,Long>>
还有一个不可变的版本,但你可能想要这个版本。