Java集合笔记
作者:@冰山醉酒
本文为作者原创,转载请注明出处:https://www.cnblogs.com/douFrank/p/16117958.html
1|0集合
对象的容器,实现了对对象常用的操作,类似数组的功能
二:集合和数组的区别:
-
数组的长度固定,集合查长度不固定
-
数组可以存储基本类型和引用类型,而集合只能存储引用类型
位置:java.util.*
2|0Collection体系集合
特点:代表一组任意类型的对象,无序,无下标,不能重复
方法:
方法:add( ), remove( ),contains( ),isEmpty( )
collection是抽象类,不能直接new,
3|0ArrayList
ArrayList使用:
源码分析: DEFAULT_CAPACITY = 10默认容量
注意:如果没有像集合中添加任何元素,容量0,添加一个元素之后,容量10,每次孔融时原来的1.5倍
size实际元素的个数
add()添加元素
4|0LinkList
使用同ArrayList一致
5|0Vector
使用同ArrayList一致,但遍历不同,并且有自己独有方法
6|0泛型
Java的泛型是JDK1.5引入的一个新特性,其本质是参数化类型,把类型作为参数传递
常见的形式有泛型类,泛型接口,泛型方法
好处:提高代码的重用性,防止类型转换异常,提供代码的安全性
泛型类
泛型接口
泛型方法
泛型集合:参数化类型、类型安全的集合强制类型元素必须一致。特点:编译时即可检查,而非运行时抛出异常,访问时,不必类型转换。不同泛型之间不能相互赋值反省不存在多态
调用以上泛型类,泛型接口,泛型方法
7|0Set
Hashset:基于HashCode计算与元素存放位置,当存入元素的哈希码相同时,会调用equals进行确认,如果为true,就拒绝后者存入。
TreeSet:基于排列顺序实现元素不重复。实现了SortedSet接口,对集合元素自动排序。元素对象的类型必须实现Comparable接口,指定排列顺序。
8|0Map集合
Map接口的特点:1. 用于存储任意键值对(key-value)
-
键:无序,无下标,不允许重复(唯一)
-
值:无序,无下标,允许重复
9|0HashMap
使用
源码分析
注意:HashMap与HashSet关系,其实是同一个东西,都是HashMap
10|0TreeMap
方法:同HashMap一致
注意:因为Tree Map的存储结构为红黑树,添加元素的时候需要进行比较
11|0Collections 工具类
方法:
-
sort排序
-
binarySearch二分查找,若找到返回下标,找不到返回负值
-
copy(目标,源)复制 复制之前保证目标有自购的容量
-
resverse反转
-
shuffle打乱
-
toArray(new Integer[0]) list转为数组
-
asList(数组名) 数组转成集合
12|0集合总结
集合的概念:对象的容器,和数组类似,定义了对多个对象进行操作的常用方法
List集合:有序、有下标、元素可以重复。(ArrayList【存储结构:数组】,LinkedList【存储结构:双向链表】,vector【存储结构:数组】)
Set集合:无序,无下标,元素不可重复。(HashSet【存储结构:数组+链表+红黑树】、TreeSet【存储结构:红黑树】)
Map集合:存储一对数据,无序,无下标,键不可重复,值可以重复(HashMap【存储结构:数组+链表+红黑树】、HashTable【已过时】、TreeMap【存储结构:红黑树】)
注意: 1. TreeSet和TreeMap因为存储结构是红黑树的原因,添加元素的时候需要比较大小后进行加入,所以当为某些类的对象时候需要继承Comparable接口,重写CompareTo( )方法或者在创建对象时使用Comparator方式进行定制比较
-
HashMap与HashSet关系,其实是同一个东西,都是HashMap,同样TreeMap与TreeSet也是同一个东西,都是TreeMap。
-
Collections:
__EOF__

本文链接:https://www.cnblogs.com/douFrank/p/16117958.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义