在Java中返回一对值的最佳方法是什么?

Gra*_*ham 49 java data-structures

这是一个小问题,因为我可以轻松地掀起一对班级来完成这项工作.我不是真的想这样做,我觉得应该有一些简单的,内置的,类似java的方式返回两个值.你们这是最好,最简单的方法吗?阵列?其他一些数据结构?

Aas*_*set 35

据我所知,遗憾的是,Java中没有一对内置表示(我当然希望有).就个人而言,当我编写一个项目,我发现一个对类通常会有用时,我创建了一个泛型Pair<T, U>类(这可能就是你想到的).返回一个数组是一种快速而简单的方法,但是你可能会后来后悔,因为使用你的方法的人会想知道这个方法在某些时候是否会返回两个以上的值.

无论你选择哪种解决方案:每当你觉得你需要一对时,你应该考虑今天使用例如通用Pair类节省的时间是否真的值得向下一个阅读代码的人丢失信息(这个人很可能是你六个月了).为返回类型编写单独的类现在需要更多时间,但它会向使用您的方法的人传达更多信息(即,它告诉用户返回值表示什么,并包含两个值的有用成员名称).但是,如果它是仅使用少数几个地方的非公共方法,则更容易接受.

  • 但是,如果你是那种在困惑中茁壮成长的人,那么你可以嵌套这些对!例如,返回Pair <String,Pair <Integer,Pair <Peach,Pear >>> (4认同)
  • @Sam Barnum:当然 - 我承认我自己做过几次.:p虽然看起来不太愉快,但是......(另一方面,在LISP中,所有列表都以这种方式表示,只有更漂亮的语法.) (2认同)
  • @Sam Barnum,我也喜欢嵌套成对的梨子! (2认同)

Hzy*_*zyf 29

使用容器类是最简单的方法.

 public class Pair<T, U> {         
    public final T t;
    public final U u;

    public Pair(T t, U u) {         
        this.t= t;
        this.u= u;
     }
 }
Run Code Online (Sandbox Code Playgroud)


tru*_*ity 13

我已经看到了在标准库一"对"最接近的事是Map.Entry界面和AbstractMap.SimpleEntryAbstractMap.SimpleImmutableEntry实现它的类.

如果两个对象都是同一个类,则数组更易于使用.