为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

小怪兽爱吃肉 2019-06-26 15:56:33
值对的Java集合?(元组?)我喜欢Java有一个Map,您可以在其中定义映射中每个条目的类型,例如<String, Integer>.我要寻找的是一种集合的类型,其中集合中的每个元素都是一对值。这对中的每个值都可以有自己的类型(如上面的String和Integer示例),这是在声明时定义的。集合将保持其给定的顺序,并且不会将其中一个值视为唯一的键(如在地图中)。本质上,我希望能够定义一个类型数组。<String,Integer>或者其他两种类型。我意识到,除了其中的两个变量之外,我可以创建一个类,但这似乎过于冗长。我也意识到我可以使用一个2D数组,但是由于我需要使用不同的类型,我必须使它们成为对象数组,然后我必须一直进行转换。我只需要在集合中存储对,所以每个条目只需要两个值。这样的东西在不走类路线的情况下存在吗?谢谢!
查看完整描述

3 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

结对类是那些“gimme”泛型示例之一,它们很容易自己编写。例如,从我的头顶上:

public class Pair<L,R> {

  private final L left;
  private final R right;

  public Pair(L left, R right) {
    this.left = left;
    this.right = right;
  }

  public L getLeft() { return left; }
  public R getRight() { return right; }

  @Override
  public int hashCode() { return left.hashCode() ^ right.hashCode(); }

  @Override
  public boolean equals(Object o) {
    if (!(o instanceof Pair)) return false;
    Pair pairo = (Pair) o;
    return this.left.equals(pairo.getLeft()) &&
           this.right.equals(pairo.getRight());
  }}

是的,它存在于网络上的多个地方,具有不同程度的完整性和特性。(我上面的例子是不可变的。)


查看完整回答
反对 回复 2019-06-26
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

摘要Map.ImpleEntry

轻松点,你要找的是:

java.util.List<java.util.Map.Entry<String,Integer>> pairList= new java.util.ArrayList<>();

你怎么填?

java.util.Map.Entry<String,Integer> pair1=new java.util.AbstractMap.SimpleEntry<>("Not Unique key1",1);java.util.Map.Entry<String,Integer> pair2=new java.util.AbstractMap.SimpleEntry<>("Not Unique key2",2);pairList.add(pair1);pairList.add(pair2);

这简化为:

Entry<String,Integer> pair1=new SimpleEntry<>("Not Unique key1",1);Entry<String,Integer> pair2=new SimpleEntry<>("Not Unique key2",2);pairList.add(pair1);pairList.add(pair2);

还有,在一个人的帮助下createEntry方法,可以进一步减少以下详细内容:

pairList.add(createEntry("Not Unique key1", 1));pairList.add(createEntry("Not Unique key2", 2));

ArrayList不是最终的,它可以被子类化以公开of方法(以及前面提到的createEntry方法),导致语法简洁:

TupleList<java.util.Map.Entry<String,Integer>> pair = new TupleList<>();pair.of("Not Unique key1", 1);pair.of("Not Unique key2", 2);


查看完整回答
反对 回复 2019-06-26
  • 3 回答
  • 0 关注
  • 702 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信