哈希-题型总结

概念理解

构建键值对不一定要建立map,也可以使用数组,如LeetCode645错误的集合。
两个对象即便是内容相同,它的hash值也是不同的,除非子集重写hash方法。如AAAA365. 水壶问题

题型总结

原地哈希

元素匹配

技巧/API

Pair<T,T>
Pair是一对值,Map是集合

import javafx.util.Pair;

Pair<Integer, String> pair = new Pair<>(1, "One");
Integer key = pair.getKey();
String value = pair.getValue();

Set

只要放在TreeSet中的元素对象,在该对象的类中必须实现Comparable接口,必须覆盖该接口中的compareTo()方法,并在该方法中编写比较规则。(该方法不能自动生成)

自然排序: 自定义类实现Comparable接口,重写compareTo方法,根据返回值进行排序
​比较器排序: 创建TreeSet对象的时候传递Comparator的实现类对象,重写compare方法,根据返回值进行排序
TreeSet的自然排序和定制排序
TreeSet集合中自然排序和比较器排序概述和总结

迭代器

java.util.ConcurrentModificationException

并发模式下,使用迭代器遍历集合,集合的remove方法可能会报java.util.ConcurrentModificationException
原因是:
ArrayList的remove方法修改的变量是继承自AbstractList的变量modCount;而Itr的remove方法修改的是自身的变量expectedModCount。这两个变量的作用都是记录修改次数的。

在用ArrayList进行删除操作以后,modCount改变了,但是迭代器中的expectedModCount 还是原样不动。所以,在用ArrayList的remove方法进行删除操作以后,Itr里面的expectedModCount会与ArrayList的modCount进行比较,二者不相等,所以会抛错。

原文链接:https://blog.csdn.net/qq_35056292/article/details/79751233

解决办法使用迭代器的删除方法iterator.remove(),iterator.remove()会调用集合的remove方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值