值对的Java集合?(元组?)

我喜欢Java有一个映射,您可以在映射中定义每个条目的类型,例如<字符串,整数&gt

我要寻找的是一种集合类型,其中集合中的每个元素都是一对值。该对中的每个值都可以有自己的类型(如上面的字符串和整数示例),这是在声明时定义的

集合将保持其给定的顺序,并且不会将其中一个值视为唯一键(如在映射中)

本质上,我希望能够定义类型的数组<字符串,整数&gt或任何其他2种类型

我意识到我可以创建一个只包含两个变量的类,但这似乎过于冗长了

我也意识到我可以使用2D数组,但是由于我需要使用不同的类型,我必须使它们成为对象数组,然后我必须一直进行强制转换

我只需要在集合中存储对,因此每个条目只需要两个值。这样的东西不走课堂路线就存在吗?谢谢

AbstractMap.SimpleEntry

很简单,你正在寻找这个:

java.util.List<java.util.Map.Entry<字符串,整数&gt&燃气轮机;pairList=newjava.util.ArrayList&lt&燃气轮机;();

你怎么填呢

java.util.Map.Entry<字符串,整数>pair1=newjava.util.AbstractMap.SimpleEntry&lt&燃气轮机;(“非唯一键1”,1);
java.util.Map.Entry<字符串,整数>pair2=newjava.util.AbstractMap.SimpleEntry&lt&燃气轮机;(“非唯一键2”,2);
pairList.add(pair1);
pairList.add(pair2);

这简化为:

条目<字符串,整数>pair1=新的简单尝试&lt&燃气轮机;(“非唯一键1”,1);
进入<字符串,整数>pair2=新的简单尝试&lt&燃气轮机;(“非唯一键2”,2);
pairList.add(pair1);
pairList.add(pair2);

并且,借助createEntry方法,可以进一步将详细性降低到:

添加(createEntry(“非唯一键1”,1));
添加(createEntry(“非唯一键2”,2));

由于ArrayList不是final,因此可以将其子类化以公开of方法(以及前面提到的createEntry方法),从而在语法上简洁:

元组列表<java.util.Map.Entry<字符串,整数&gt&燃气轮机;pair=新的元组列表&lt&燃气轮机;();
一对(“非唯一键1”,1);
一对(“非唯一键2”,2);

发表评论