java返回值多个_java 如何能在一个方法中返回多个值?

展开全部

最开始说一下我使用的解决办法:Pair 和 Triple

偶然看到这个问题,浏览量也很大,还是e68a843231313335323631343130323136353331333431373233写一下我认为最好的办法吧,跟大家交流一下。

说一下前面的人答的方案,都可以解决问题,但是觉得不太好。您要是说 可以解决问题就行,那我无话可说。写代码如果只是为了完成任务,不考虑实现是否优雅 和咸鱼有什么区别呢。数组明显不合适,数组适合放同一类型的数据,当然,你可以使用List,用Object 放结果,不够优雅,差评

Map 是一种能解决问题的做法,使用Object 来放结果,用key 作区分,而且方法调用者需要知道方法内部的key ,即使使用全局变量做key 也不够优雅

自定义对象,新建一个类,例如 public class DoubleResult{getter; allArgsConstructor;}、public class TripleResult{getter; allArgsConstructor;

} ,效果棒棒的

接下来要说的 Pair 和Triple 就是上面第三种方案的实现。org.apache.commons.lang3.tuple.Pair,org.apache.commons.lang3.tuple.Triple 是commons-lang包里的两种元组类型。Pair可以存两个数据,Triple 可以存三个,再多 那么考虑一下你的方法是否可以拆一下。

简单说一下他们的用法吧。

Pair 初始化:Pair.of(L left, R right);

例:Pair.of("a","b");

或:Pair pair = new Pair() {

@Override

public Object getLeft() {

return null;

}

@Override

public Object getRight() {

return null;

}

@Override

public Object setValue(Object value) {

return null;

}

};

Triple 初始化:Triple.of(L left, M middle, R right)

或:Triple triple = new Triple() {

@Override

public Object getLeft() {

return null;

}

@Override

public Object getMiddle() {

return null;

}

@Override

public Object getRight() {

return null;

}

};

Pair 获取内容:pair.getKey();

pair.getValue();

Triple 获取内容:triple.getLeft();

triple.getMiddle();

triple.getRight();

另外org.apache.commons.lang3.tuple 包下还有ImmutablePair、ImmutableTriple、MutablePair、MutableTriple 分别对应两种结构的不可变和可变类型,大家可以自行探索。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>