java中的数据类型比较多,有基本的四类八种,还有引用类型。
基本数据类型这边就不重复了,今天重点梳理一下引用类型的一个大头:集合的门派。
区分集合,最显著的特征,从是否线程安全,是否有序,可重复来区分。经过我很长时间的总结:基本把集合的门派和族谱摸清了:
集合总的来看,可以分为两大派系:单列(Collection)和双列(Map),这两个都是接口。
1、Collection接口:单列集合,有两个子接口
1.1List接口:(有序可重复)
有三个实现类:
LinkedList:基于链表(可以理解成数据之间有个链子串起来了),所以增删快,查询慢;
ArrayList:这个大家最常见,基于数组(由于数组有索引下标),所以检索比较快,增删慢;
Vector:这个比较陌生,很少使用,为啥?因为它效率太低,但是它是线程安全的;
1.2Set接口:(不可重复)
有两个实现类:
HashSet:底层是哈希表,它是无序的;
LinkedHashSet:底层是链表和哈希表,所以是有序的。
2、Map接口:
双列集合,有三个实现类
HashMap:高效,支持null,无序(只要是哈希出来的,都是无序的),但是非线程安全(使用的比较多)
HashMap有一个子类,LinkedHashMap,有序的;
HashTable:线程安全,往往也意味着,效率低,不支持null,无序的。
TreeMap:二叉树,是有序的,默认升序排序;
对比着去记忆,才能梳理清楚。把常见的记清楚也够使用了。