2026/10/26 17:56:20

java学习笔记(九)——Collection集合体系

java学习笔记(九)——Collection集合体系 文章目录体系Collection常见方法遍历方法存储原理List特有方法ArrayList的底层原理LinkedListSet哈希表HashSet的底层原理LinkedSet的底层原理TreeSet的底层原理解决并发异常问题可变参数Collections工具类体系CollectionCollection是单列集合的祖宗它规定的方法功能是全部单列集合都会继承的。常见方法遍历方法获取iterator迭代器:iterator迭代器的常用方法:next()会先获取当前位置的元素再指向下一个元素增强for方法本质就是迭代器遍历集合的简化写法(相当于C#中的foreach)。lambda表达式(推荐):函数式接口-匿名内部类-lambda表达式存储原理集合中存储的是元素对象的地址。List有序可重复有索引ArrayList:LinkedList基于双向链表特有方法List集合因为支持索引所以多了很多与索引相关的方法当然Collection的功能List也都继承了。ArrayList的底层原理基于数组默认大小为0当放入第一个元素时扩容为10当放不下时扩容为1.5倍当一次添加多个元素扩容为1.5倍仍然放不下时扩容的大小以实际为准查询快增删慢LinkedList基于双链表实现的提供了很多首尾相关的方法可用于设计栈和队列Set无序添加数据与读取数据的顺序不一样无重复无索引Set要用到的常用方法基本上就是Collection提供的 自己几乎没有额外新增一些常用功能哈希表哈希值就是一个int类型的数值Java中每个对象都有一个哈希值。Java中的所有对象都可以调用Obejct类提供的hashCode方法返回该对象自己的哈希值。哈希碰撞同一个对象多次调用hashCode()方法返回的哈希值是相同的。不同的对象它们的哈希值一般不相同但也有可能会相同(哈希碰撞)。哈希表HashSet的底层原理注意如果希望Set集合认为2个内容一样的对象是重复的必须重写对象的hashCode()和equals()方法。LinkedSet的底层原理TreeSet的底层原理底层是基于红黑树实现的排序。不重复、无索引、可排序默认升序排序 按照元素的大小由小到大排序对象默认排序的解决方案解决并发异常问题使用迭代器遍历集合但用迭代器自己的删除方法删除数据即可。如果能用for循环遍历时可以倒着遍历并删除或者从前往后遍历但删除元素后做i --操作。增强for循环和foreach无法解决并发异常问题可变参数可变参数就是一种特殊形参定义在方法、构造器的形参列表里格式是数据类型…参数名称可变参数的特点和好处特点可以不传数据给它可以传一个或者同时传多个数据给它也可以传一个数组给它。好处常常用来灵活的接收数据。可变参数的注意事项可变参数在方法内部就是一个数组。一个形参列表中可变参数只能有一个可变参数必须放在形参列表的最后面Collections工具类是一个用来操作集合的工具类常用静态方法