集合框架图以及一些理解与总结
来源:互联网 发布:js 删除预览图片 编辑:程序博客网 时间:2024/06/05 00:48
Java集合架构支持3种类型的集合:规则集(Set),线性表(List),和图(Map),分别定义在Set,List,Map中。Set实例存储一组互不相同的元素(集合),List实例存储一组顺序排列的元素,Map存储一组 对象---关键值的映射
(图取自网络)
简单分析:
Set、List和Map可以看做集合的三大类。
List集合是有序集合,集合中的元素可以重复,访问集合中的元素可以根据元素的索引来访问。
Set集合是无序集合,集合中的元素不可以重复,访问集合中的元素只能根据元素本身来访问(也是不能集合里元素不允许重复的原因)。
Map集合中保存Key-value对形式的元素,访问时只能根据每项元素的key来访问其value。
对于Set、List和Map三种集合,最常用的实现类分别是HashSet、ArrayList和HashMap三个实现类。
HashSet(哈希集合):HashSet类是Set接口实现类之一,使用较为广泛,它不保存元素的加入顺序。HashSet类根据元素的哈希码进行存放,所以取出时也可以根据哈希码快速找到。注意:因为Set接口中不能加入重复元素,所以对于自定义类,需要提供元素的方法,即需要重写hashCode()和equals()方法。Java规范中要求,如果程序员重写了equals方法,就一定要重写hashCode方法。当两个对象调用equals方法比较时,如果返回true,那么他们的hashCode值要求返回值相等。
equals方法和hashCode方法的说明:
1)如果两个对象相同,那么他们的hashCode(哈希码)一定要相同;
2)如果两个对象的hashCode(哈希码)相同,这两个对象并不一定相同。
ArrayList(顺序表集合):ArrayList类扩展了AbstractList并实现List接口。
AyyayList类提供了一个随需要而增长的动态数组。在Java中,标准数组是固定长度的,在数组创建之后,他们不能被加长或缩短,这也就意味着我们必须事先知道数组可以容纳多少元素。但是知道运行时才能知道需要多大的数组。AyyayList类就是为了解决这个问题。(特点
对于使用索引查询元素效率较高,它可以使用索引快速定位元素位置,但删除或插入元素效率较低)
HashMap(哈希映射集合):HashMap类是基于哈希表的Map接口实现,提供所有可选的映射操作,效率高,所以在实际应用开发中使用广泛。由于HashMap的键要求不重复,建议尽量使用标准库类,避免自定义类重写equals方法和hashCode方法。
补充说明:
1)如果涉及到堆栈、队列等操作,应考虑使用List接口的实现类;
2)如果要进行大量的随机访问,应该使用ArrayList;
3)如果经常进行插入和删除操作,应该使用LinkedList;
4)总是使用类型安全的泛型,避免在运行时出现ClassCastException异常;
5)尽量使用JDK的标准类作为Map的键(如String,Integer等,可以避免自体实现比较器
或equals方法和hashCode方法;
1 0
- 集合框架图以及一些理解与总结
- 集合框架的一些理解
- 对集合框架一些总结(上)
- 对集合框架一些总结(下)
- Java集合框架的一些总结
- 一些关于Ajax总结以及理解
- Java集合框架理解与分析01
- Java 集合框架 源码浅析 与理解
- Java集合与框架总结与学习
- Java集合与框架总结与学习
- Java集合与框架总结与学习
- Java集合与框架总结与学习
- java集合框架中List的定义以及一些注意事项
- 集合框架-集合总结
- 集合框架LinkedList与Set总结
- Java 集合框架总结与巩固
- 集合中LIst和ArrayList以及Hash一些知识点总结
- 集合框架Vector中的枚举以及LinkedList的学习总结
- SpringMVC HelloWorld实例开发及部署
- 寻找素数
- 回文数字
- [BZOJ3519][Zjoi2014][模拟]消棋子
- 使用Spring的JAVA Mail支持简化邮件发送
- 集合框架图以及一些理解与总结
- except as e中的‘e’的作用总结
- SQL Server-索引故事的遥远由来,原来是这样的?(二十八)
- Python 在Mysql中插入数据
- 浅谈Spring的PropertyPlaceholderConfigurer
- Leetcode 86. Partition List
- pip install PIL 报错
- 最全的 jdk 官方下载页面
- 1.11.1二分查找最接近的数