java容器基础
总结一下学过的java容器知识。
一、java容器框架
由于之前学习的java容器类比较混乱,先简单的整理一下java集合框架。
首先,像这种图,网上到处都是,因为这个也算比较准确吧,我也懒得自己画了,因为我觉得这个目前对我来说不重要,这么多东西,并不是都用得到,其实日常写代码就只用到过几种,像最常用的ArrayList、HashMap等,在这里我只总结一些最基础的、常用的,希望对java初学者有所帮助。常用的java容器主要分为两大类:用于单值存储的Collection和用于双值存储的Map。这两个java容器类的最基础接口,那么我们主要用到的他们的哪些实现呢?
二、Collection接口
1,Collection接口是java集合类的基础接口。
collection主要方法:
- boolean add(Object o)添加对象到集合
- boolean remove(Object o)删除指定的对象
- int size()返回当前集合中元素的数量
- boolean contains(Object o)查找集合中是否有指定的对象
- boolean isEmpty()判断集合是否为空
- Iterator iterator()返回一个迭代器
- void clear()删除集合中所有元素
- boolean containsAll(Collection c)查找集合中是否有集合c中的元素
- boolean addAll(Collection c)将集合c中所有的元素添加给该集合
- void removeAll(Collection c)从集合中删除c集合中也有的元素
- void retainAll(Collection c)从集合中删除集合c中不包含的元素
前7个方法都是比较常用的,Collection接口又有常用的两个子接口,List接口和Set接口。
2,List接口中的元素是有序可重复的。
List接口有三个实现类:ArrayList,LinkList,Vector。
ArrayList是基于数组接口的集合类,所以数据的查询比较快,LinkList底层是双向链表实现的,所以增删比较快。Vector和特们的不同之处是Vector是线程安全的,效率也比较低,不太常用,在java的集合类中有一个很奇怪的现象,就是往往很多线程安全的东西,都不会经常用到,人们更喜欢把线程不安全的东西用一些特殊的方法使他变得线程安全,具体什么原因,在网上也查不到,还是要加紧学习啊!
3,Set接口中的元素是不可重复的。
Set接口有两个常用的实现类:HashSet,TreeSet。
HashSet是用的最多的,TreeSet用的则比较少,前者存储的元素是无序的(基于哈希表实现),后者存储的元素是有序的(基于二叉树)。两者都是线程不安全的。
三、Map接口
1,Map接口是java双值存储的最基础接口
Map主要方法:
2,HashMap
3,HashTable
4,TreeMap
四、补充
1,重复问题
2,排序问题
3,java数据接口
https://study.163.com/course/courseMain.htm?courseId=1006190095
五、总结
实现类/特性 | 线程安全 | 存取速度 | 数据结构 | 使用频率 | 迭代方法 |
ArrayList | |||||
LinkList | |||||
Vector | |||||
HashSet | |||||
TreeSet | |||||
HashMap | |||||
HashTable |
最新文章
- DataGrid中的常用属性
- Mac OS 后台服务注册
- ckeditor简单的演示
- AngularJS 特性—SinglePage、template、Controller
- PHPStorm下XDebug配置
- [ZOJ 1004] Anagrams by Stack (简单搜索)
- poj 2503 Babelfish (查找 map)
- MyDetailedOS
- PayablebillImpl
- mooc
- Java 英文面试题
- 2.QLabel,QPushButton,QLineEdit,QComboBox,QCheckBox,QRadioButton,QTextEdit,QTextBrowser,QGroupBox,QSl
- 查询订阅某topic的所有consumer group(Java API)
- unity中遍历Transform的子物体
- 设计模式<;1>;------单例模式和原型模式------创建型
- Python_day5
- 从原型链看DOM--Node类型
- iOS UI基础-8.0 UIAlertView使用
- android的几种“通知”方式简单实现(Notification&;NotificationManager)
- 对设计领域中Tile和Card的理解
热门文章
- 团体程序设计天梯赛-练习集-L1-026. I Love GPLT
- python django整理(五)配置favicon.ico,解决警告Not Found: /favicon.ico(转载)
- [NOI2005]维护数列_Splay
- Disconf使用简单Demo
- 移动端使用rem时候动态设置html字体大小
- 解决SpringBoot+JPA中使用set方法时自动更新数据库问题
- vue-cli3.0 搭建项目
- How to improve Java&;#39;s I/O performance( 提升 java i/o 性能)
- wpf获取目录路径
- Unreal Engine 4 C++ 为编辑器中Actor创建自己定义图标