java中用3元符_java – 三元运算符执行方法

博客讨论了在Java中使用HashMap时,如何优雅地处理键值对不存在的情况。作者比较了两种方法:一种是标准的if-else结构,另一种是使用三元运算符。问题在于,使用三元运算符是否会导致map.get(key)被不必要的重复调用。解决方案是提供了一种更简洁且避免冗余调用的方法,通过先获取值然后根据需要添加元素和更新映射。
摘要由CSDN通过智能技术生成

参见英文答案 > Map.get() optimization in ?: ternary operator                                    3个

我有一个HashMap< Foo,ArrayList< Bar>>当我得到一个与键相关联的ArrayList并为其添加一些值时,我希望这样.

三元运算符

我目前正在做的是检查与键Foo相关联的值是否为空,如果是,则将新的ArrayList添加到我想要的内容并将其放回到地图中.如果没有,我存储他们arrayList添加我想要的东西,然后再将它放回到地图中.

我可以这样做:

ArrayList valuesList = map.get(key);

if(valuesList == null){

valuesList = new ArrayList;

}

valuesList.add(Item);

map.put(Foo,valuesList);

但我更喜欢使用三元运算符来使我的代码更短一些:

ArrayList valuesList= (map.get(key) == null) ? new ArrayList() : map.get(key);

valuesList.add(Item);

map.put(Foo,valuesList);

我的问题是,(在第二个)示例我是否执行了两次map.get(key)?或者Java编译器是否很聪明并只评估一次? (我知道它在执行速度方面存在细微差别,但如果它执行两次,这足以让我开始使用示例1)

解决方法:

以下是我使用的内容,因为如果列表已经在您的地图中,您也不会不必要地调用put:

List valuesList = map.get(key);

if(valuesList == null){

valuesList = new ArrayList();

map.put(key,valuesList);

}

valuesList.add(Item);

注意,我发现这比使用三元运算符更具可读性(更少的代码行不一定更简单,恕我直言).根据地图的大小,节省不必要的电话(获取和放置)可能并不简单.

标签:java,ternary-operator

来源: https://codeday.me/bug/20190824/1712374.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值