部分随想录精华

引用自 Carl的代码随想录 仅作个人纪录参考

  • java的对象传参的问题:把一个对象进行传参,传的是这个对象的地址或者说是引用,这个引用是一个拷贝,但指向了这个同一个对象。这样就使得通过这个引用拷贝可以修改其关联对象的属性。但是传进去的引用本身只是个副本,只是个变量而已,对这个变量本身进行赋值,只能使得它保存另外的引用,无法影响外界。
  • Arrays.asList可以将数组转为LIst;而list转数组没什么好办法,遍历赋值即可
  • 比较字符串相等记得要用 .equals(str)
  • Map中使用 Entry 内部类来表示一个映射项,包含 key 和 value,Map.Entry中包含 getKey()和getValue()方法
    • entrySet是 java 中键值对的集合,Set 里面的类型是Map.Entry,一般可以通过map.entrySet()得到。entrySet实现了Set接口,里面存放的是键值对,一个 K 对应一个 V。可以借此来遍历 map
    • keySet是键的集合,Set里面的类型即是key的类型
  • 为什么很多地方只需要用到单端队列,但都用的是Deque?
    Deque覆盖了单队列的功能,用哪个都无所谓,索性直接用Deque就好了。在java很多实现中也都是直接用的双端队列
  • Deque 的offer 和 offerlast什么区别?
    因为Deque是继承的Queue  所以实现了offer方法  然后offerLast是Deque特有
  • 提醒大家Java比较大小的时候最好还是用 Integer.compare(a, b), 否则有可能溢出
  • Java当中栈有很多实现方式, LinkedList, ArrayDeque, 数组都可以模拟栈, 所以其实他们的本质都是栈, 实现不一样而已, 其他语言同理有很多能实现的
  • 关于Java中,基本类型比如int的数组,我们用Arrays.sort() 方法进行排序时,是不支持用lambda或者Comparator去自定义比较器的,它们只支持引用类型,不支持基本数据类型。解决办法:转化为List、使用包装类数组、IntStream等。
  • 关于List的toArray方法:Java中的List接口有两个toArray方法,一个是toArray(),一个是toArray(T[] a)。toArray()方法返回一个Object[]类型的数组,而toArray(T[] a)方法返回一个T[]类型的数组。如果传入的数组a的长度小于List中元素的个数,那么toArray(T[] a)方法会新建一个T[]类型的数组,长度为List中元素的个数,然后将List中的元素复制到新建的数组中。如果传入的数组a的长度大于等于List中元素的个数,那么toArray(T[] a)方法会将List中的元素复制到传入的数组a中,然后返回传入的数组a。toArray()方法的实现就是调用toArray(new Object[0])方法。以下示例代码为常见的使用场景,即把元素类型为int[]的List转换为二维数组:
List<int[]> list = new ArrayList<>();
list.add(new int[]{1, 2});
list.add(new int[]{3, 4});
list.add(new int[]{5, 6});
int[][] arr = list.toArray(new int[0][]);

这里的int[0][]是一个空的二维数组,它的长度为0,类型为int[][]。这样,toArray方法会根据list的长度,创建一个新的二维数组,并将list中的元素复制到新的数组中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值