java list有序还是无序_java的集合框架

前言

使用java编程语言的开发人员,在日常开发过程中经常会使用到java的一些集合类,不过这些集合类太多,很多人对它们的特点和使用场景不是特别的了解,通过此文给大家总结一下这方面的知识,方便大家面试或者是初学者理解。

Java集合类主要由CollectionMap两个接口派生而出,另外还有遍历集合的工具Iterator迭代器:

0b7d30516cad0206b57a2c5a58ba92dc.png

集合框架

Connection接口

2b08ec24719e284f67acabf05156c674.png

Connection

Connection包含List和Set两大分支:

1、List( 有序、可重复)

ArrayList与Vector

①底层数据结构是数组,查询快,增删慢。

②前者效率高、线程不安全,后者效率低、线程安全。

LinkedList

①底层数据结构是链表,查询慢,增删快。

②线程不安全,效率高。

2、Set

HashSet(唯一、无序)

①底层数据结构是哈希表。

②两个方法:hashCode()和equals()

LinkedHashSet(唯一、有序)

①底层数据结构是链表和哈希表。

②由链表保证元素有序、哈希表保证元素唯一。

TreeSet(唯一、有序)

①底层数据结构是红黑树。

②自然排序、比较器排序。

③根据比较的返回值是否是0来决定是否唯一。

Map接口

323508c501823d21199a72fe3ba8f8ec.png

Map

key-value键值对,有三个比较重要的实现类,分别是HashMap、TreeMap和HashTable,这三者之间的区别:

①TreeMap是有序的,HashMap和HashTable是无序的。

②Hashtable的方法是同步的、线程安全的;HashMap的方法不是同步的、线程不安全。HashMap效率较高,Hashtable效率较低。

③Hashtable不允许null值,HashMap允许null值(key和value都允许)。

④父类不同:Hashtable的父类是Dictionary,HashMap的父类是AbstractMap。

总结

所有集合类都位于java.util包下,一般的使用场景大家只要知道list有序,set不能重复,map是键值对就差不多了,在一些特殊的场景,比如追求代码效率、线程安全等,那就要仔细区分下这些集合类了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值