Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
由enum和long as ArrayList组成的Java两项元组_Java_Arraylist_Enums - Fatal编程技术网

由enum和long as ArrayList组成的Java两项元组

由enum和long as ArrayList组成的Java两项元组,java,arraylist,enums,Java,Arraylist,Enums,我希望有一个由两项元组组成的数组列表,它由一个enum值和一个long值组成 我很好奇是否需要为此创建一个POJO,然后创建该类的数组列表,或者是否有像ArrayList这样更简单的方法 如果第二个选项是可能的,那么如何声明和添加可用项的示例是什么?第二个选项是不可能的。ArrayList只有一个模板参数 你能做的是: class MyClass { EnumClassName name; long l; ... // getters and setters }

我希望有一个由两项元组组成的数组列表,它由一个
enum
值和一个
long
值组成

我很好奇是否需要为此创建一个
POJO
,然后创建该类的数组列表,或者是否有像
ArrayList
这样更简单的方法


如果第二个选项是可能的,那么如何声明和添加可用项的示例是什么?

第二个选项是不可能的。ArrayList只有一个模板参数

你能做的是:

class MyClass {
    EnumClassName name;
    long l;
    ...
    // getters and setters
}
然后按如下方式声明数组列表:

List<MyClass> list = new ArrayList<MyClass>();
List List=new ArrayList();

第二个选项不可能。ArrayList只有一个模板参数

你能做的是:

class MyClass {
    EnumClassName name;
    long l;
    ...
    // getters and setters
}
然后按如下方式声明数组列表:

List<MyClass> list = new ArrayList<MyClass>();
List List=new ArrayList();

如果你真的想得到一个
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
但是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;
    }
}
其用途是:

int index = ...//some index
EnumClassName e = list.get(index).getKey();
long l = list.get(index).getValue(); // autounboxed value
ArrayList <MyTupleName> list = ...


int index = ...
MyTupleName tuple = list.get(index);
EnumClassName e = tuple.getE();
long l = tuple.getL();
ArrayList=。。。
int索引=。。。
MyTupleName tuple=list.get(索引);
EnumClassName e=tuple.getE();
long l=tuple.getL();

如果你真的想得到一个
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
但是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;
    }
}
其用途是:

int index = ...//some index
EnumClassName e = list.get(index).getKey();
long l = list.get(index).getValue(); // autounboxed value
ArrayList <MyTupleName> list = ...


int index = ...
MyTupleName tuple = list.get(index);
EnumClassName e = tuple.getE();
long l = tuple.getL();
ArrayList=。。。
int索引=。。。
MyTupleName tuple=list.get(索引);
EnumClassName e=tuple.getE();
long l=tuple.getL();
Apache Commons有,这正是您想要的。你会把它当作

ArrayList<ImmutablePair<EnumClass,Long>>  
ArrayList
还有一个版本不是不可变的,但您可能需要这个版本。

Apache Commons有,这正是您想要的。你会把它当作

ArrayList<ImmutablePair<EnumClass,Long>>  
ArrayList

还有一个版本不是不可变的,但您可能需要这个版本。

您只能使用单个参数对
ArrayList
进行参数化。我想POJO是更清晰的选择。您只能使用单个参数对
ArrayList
进行参数化。我想POJO会是更清晰的选择。