java集合总结
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java集合总结,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5236字,纯文字阅读大概需要8分钟。
内容图文
![java集合总结](/upload/InfoBanner/zyjiaocheng/855/e5b90f20d1564decb17b2fbad3ae315e.jpg)
本文转载自:https://blog.csdn.net/spanklebobo/article/details/52126939,有删改
1:集合:
(1) Collection(单列集合)
List(有序,可重复)
1. ArrayList
?? ??? ??? ??? ?底层数据结构是顺序表,查询快,增删慢?? ??? ??? ??? ?线程不安全,效率高
2. Vector
?? ??? ??? ??? ?底层数据结构是顺序表,查询快,增删慢?? ??? ??? ??? ?线程安全,效率低
? ? ? ? ?3. LinkedList
?? ??? ??? ??? ?底层数据结构是链表,查询慢,增删快
?? ??? ??? ??? ?线程不安全,效率高
Set(无序,唯一)
? ? ? ? ?1.HashSet?? ??? ??? ??? ?底层数据结构是哈希表。
?? ??? ??? ??? ?哈希表依赖两个方法:hashCode()和equals()
?? ??? ??? ??? ?执行顺序:
? ? ? ? ? ? ? ? ? ? ? ?首先判断hashCode()值是否相同
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 是:继续执行equals(),看其返回值
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? true:说明元素重复,不添加
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? false:就直接添加到集合
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 否:就直接添加到集合
?? ??? ??? ??? ?最终:
?? ??? ??? ??? ??? ?自动生成hashCode()和equals()即可
?? ??? ??? ??? ??? ?
- LinkedHashSet
?? ??? ??? ??? ??? ?由链表保证元素有序。
?? ??? ??? ??? ??? ?由哈希表保证元素唯一。
? ? ? ? ? 2.? TreeSet
?? ??? ??? ??? ?底层数据结构是红黑树。(是一种自平衡的二叉树)
?? ??? ??? ??? ?如何保证元素唯一性呢?
? ? ? ? ? ? ? ? ? ? ? ?根据比较的返回值是否是0来决定
?? ??? ??? ??? ?如何保证元素的排序呢?
? ? ? ? ? ? ? ? ? ? ? ?两种方式
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 自然排序(元素具备比较性)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 让元素所属的类实现Comparable接口
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 比较器排序(集合具备比较性)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 让集合接收一个Comparator的实现类对象 ?
(2)Map(双列集合)
?? ??? ?A:Map集合的数据结构仅仅针对键有效,与值无关。?? ??? ?B:存储的是键值对形式的元素,键唯一,值可重复。
?? ??? ?
? ? ? ? ?1. HashMap
? ? ? ? ? ? ? ?底层数据结构是哈希表。线程不安全,效率高
? ? ? ? ? ? ? ? ? ? ? 哈希表依赖两个方法:hashCode()和equals()
? ? ? ? ? ? ? ? ? ? ? 执行顺序:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?首先判断hashCode()值是否相同
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 是:继续执行equals(),看其返回值
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?true:说明元素重复,不添加
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?false:就直接添加到集合
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 否:就直接添加到集合
? ? ? ? ? ? ? ? ? ? ?最终:
?? ??? ??? ??? ??? ?自动生成hashCode()和equals()即可
- LinkedHashMap
?? ??? ??? ??? ??? ?由链表保证元素有序。
?? ??? ??? ??? ??? ?由哈希表保证元素唯一。
? ? ? ? ?2. hashtable
? ? ? ? ? ? ? ?底层数据结构是哈希表。线程安全,效率低
? ? ? ? ? ? ? ? ? ? ?哈希表依赖两个方法:hashCode()和equals()
? ? ? ? ? ? ? ? ? ? ?执行顺序:
? ? ? ? ? ? ? ? ? ? ? ? ? ? 首先判断hashCode()值是否相同
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?是:继续执行equals(),看其返回值
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? true:说明元素重复,不添加
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? false:就直接添加到集合
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?否:就直接添加到集合
? ? ? ? ? ? ? ? ? ? ?最终:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 自动生成hashCode()和equals()即可
? ? ? ? ?3. TreeMap
? ? ? ? ? ? ? ?底层数据结构是红黑树。(是一种自平衡的二叉树)
? ? ? ? ? ? ? ? ? ? ? 如何保证元素唯一性呢?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?根据比较的返回值是否是0来决定
? ? ? ? ? ? ? ? ? ? ?如何保证元素的排序呢?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?两种方式
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?自然排序(元素具备比较性)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 让元素所属的类实现Comparable接口
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?比较器排序(集合具备比较性)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 让集合接收一个Comparator的实现类对象
?? ?
2:到底使用那种集合:
? ? ? ? ?看需求。?? ?
? ? ? ? ?是否是键值对象形式:
? ? ? ? ? ? ? ? 是:Map
? ? ? ? ? ? ? ? ? ? ? ?键是否需要排序:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 是:TreeMap
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 否:HashMap
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 不知道,就使用HashMap。
? ? ? ? 否:Collection
? ? ? ? ? ? ? ?元素是否唯一:
? ? ? ? ? ? ? ? ? ? ? 是:Set
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?元素是否需要排序:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 是:TreeSet
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 否:HashSet
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 不知道,就使用HashSet
?? ??? ??? ??? ??? ?
? ? ? ? ? ? ? ? ? ? ? 否:List
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 要安全吗:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 是:Vector(其实我们也不用它,后面我们讲解了多线程以后,我在给你回顾用谁)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 否:ArrayList或者LinkedList
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 增删多:LinkedList
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 查询多:ArrayList
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?不知道,就使用ArrayList
? ? ? ? ? ? ? ? ? ? ? ?不知道,就使用ArrayList
?? ??? ??? ?
3:集合的常见方法及遍历方式
?? ?Collection:?? ??? ?add()
?? ??? ?remove()
?? ??? ?contains()
?? ??? ?iterator()
?? ??? ?size()
?? ??? ?
?? ??? ?遍历方式:
?? ??? ??? ?增强for
?? ??? ??? ?迭代器
?? ??? ??? ?
?? ??? ?|--List
?? ??? ??? ?get()
?? ??? ??? ?
?? ??? ??? ?遍历:
?? ??? ??? ??? ?普通for
?? ??? ?|--Set
?? ?
?? ?Map:
?? ??? ?put()
?? ??? ?remove()
?? ??? ?containskey(),containsValue()
?? ??? ?keySet()
?? ??? ?get()
?? ??? ?value()
?? ??? ?entrySet()
?? ??? ?size()
?? ??? ?
?? ??? ?遍历方式:
?? ??? ??? ?根据键找值
根据键值对对象分别找键和值。
内容总结
以上是互联网集市为您收集整理的java集合总结全部内容,希望文章能够帮你解决java集合总结所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。