java map keyset_写了5年Java代码,还是不小心掉进了这些坑

b4900205d3f58aa9e057e4df9e8217f4.png

第一个坑

Set set = new HashSet <>();for (int i = 0; i <100; i++) { set.add(i); set.remove(i-1);}System.out.println(set.size());

结果是什么?

现在换一个

Set set = new HashSet <>();for (short i =0 ; i < 100 ; i++) { set.add( i ); set. remove( i -1 ); } System.out.println(set.size());

这次输出什么?

如果不能确定的话,手动运行一下。

第二个坑

Object i = 1 == 1 ? new Integer(3) : new Float(1 ); System.out.println( i );

它输出什么?

如果没猜对,先自己找答案

第三个坑

这个是在写功能时实际碰到的,看似风平浪静,结果一运行,甩你一个异常。

// id, nameMap map = new HashMap<>();map.put(1L, "1111");map.put(2L, "2222");map.put(3L, "3333");// 后面需要调用的一个方法入参是long[] 类型,// map.keySet()可以拿到id的列表,toArray方法可以转化数组// ArrayUtils.toPrimitive方法可以把对象数据转化为基本类型数组// 然后,我就这样写了long[] ids = ArrayUtils.toPrimitive((Long[])map.keySet().toArray());

自以为写的没问题,结果一运行,抛了个异常

Exception in thread "main" java.lang.ClassCastException:[Ljava.lang.Object; cannot be cast to [Ljava.lang.Long;

其实这种抛异常还好,至少告诉你错了,最怕那种,运行之后默默返回了不符合预期的结果。

最后,看到方法注释,为了得到Long[],需要这样。

map.keySet().toArray(new Long[0]);

你曾经不小心碰到过哪些坑?

欢迎留言。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值