ArrayList、HashMap中都有一个属性叫modCount,每次对集合的修改这个值都会加1,在遍历前记录这个值到expectedModCount中,遍历中检查两者是否一致,如果出现不一致就说明有修改,则抛出ConcurrentModificationException异常。 底层数组存/取元素效率非常的高(get/set),时间复杂度是O(1),而查找(比如:indexOf,contain),插入和...
Object类中定义了一个hashCode()方法来返回每个Java对象的哈希码,当从HashSet集合中查找某个对象时,Java系统首先调用对象的hashCode()方法获得该对象的哈希码,然后根据哈希码找到相应的存储区域,最后取出该存储区域内的每个元素与该对象进行equals方法比较,这样不用遍历集合中的素有元素就可以的到结论。可见,HashSet集合...
(这一篇Set篇可以说是基于Map篇的,HashSet底层是HashMap,数组+链表+红黑树。TreeSet底层是TreeMap,是基于红黑树(是一个自平衡的二叉树),LinkedHashSet底层数据结构由哈希表(是一个元素为链表的数组)和双向链表组成。没有看过我Map篇的点击这里的直通车) 本篇是Java基础中最重要的知识点集合Map篇。Java集合是ja...
1、HashSet在存储数据时,内部首先调用hashCode方法,如果hashCode一致,在调用equals方法 2、如果hashCode不一致,那么就将数据存储到hashSet集合中。 import java.util.*; public class SetDemo{ public static void main(String args[]){ HashSet hs = new HashSet(); hs.add(new Person("lzl",18)); hs.add...
Java工具包中所提供的数据结构非常强大并且有很多的功能。这些数据结构包含以下的接口和类: Enumeration BitSet Vector Stack Dictionary Hashtable Properties 现在这些类都是旧的了,Java-2已经引入了一种新的框架叫做Collections Framework。 一、Enumeration
一、 Set一个不包含重复元素的 collection。Set:元素是无序(存入和取出的顺序不一定一致),元素不可以重复。 |--HashSet:底层数据结构是哈希表。线程不同步。 |--TreeSet:底层数据结构是二叉树。可以对Set集合中的元素进行排序。默认按照字母的自然排序。Set集合的功能和Collection是一致的。二、HashSet特点:不...