Java集合类分析

本文主要对java中集合相关的知识点做一个汇总,后续会分析相关的常用子类

继承关系图

java集合继承关系如下所示:

Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
│
└Set
 ├HashSet
 ├TreeSet
 └LinkedHashSet

Map
├Hashtable
├HashMap
├TreeMap
├LinkedHashMap
└WeakHashMap
复制代码
  1. Collection没有直接的实现类,让其被继承产生了两个接口,如上图所示,就是Set和List。

    • Set中不能包含重复的元素,同时数据的存储并不是有序的(存入和取出的顺序不一定相同)。
    • List是一个有序的集合,可以包含重复的元素,提供了按索引访问的方式。
  2. 集合中的另一个接口就是Map。Map包含了key-value对,Map不能包含重复的key,但是可以包含相同的value。

  3. 集合中所有的类都实现了Iterator接口,用于遍历、操作集合中的数据,主要有如下几个方法:

    • hasNext();是否还有下一个元素。
    • next();返回下一个元素。
    • remove();删除当前元素。

集合子类之间的区别

  1. List :list数据有序,可重复。可以通过索引进行数据的增、删、改。

    • Arraylist使用数组实现,相对应的查询快,修改慢。适用于经常查询的场景
    • LinkedList使用双向链表实现,相对应的查询慢,修改快。适用于经常修改数据的场景
  2. Set:Set数据存放无序,不可重复。

    • HashSet通过hashCode()和equals()来保证数据的唯一性;
    • TreeSet通过对元素实现Comparable接口或者TreeSet指定排序规则,让元素可排序,并通过这个比较元素是否是唯一的
  3. Map:Map已键值对的形式存放数据,键不能重复,值可以重复。

    • HashMap:根据key的hashCode值和equals方法来区分不同的key,同时因为这个遍历时取到的key是无序的。线程不同步,相对于HashTab效率高。能存放一个null值的key(hashcode),同时不限制null值的value数量
    • HashTable:相对于HashMap,线程安全,同时效率也对于HashMap低。存储时键值都不能为null。
    • TreeMap:遍历时默认按key的升序排列,这意味着key不能为null。线程不同步
    • LinkedHashMap:遍历时按key插入的顺序取出,有序,相对于HashMap效率略低。线程不同步,可存放一个key为null值,value不做限制。

总结

看到Array,就要想到角标,查询快。

看到Link,就要想到first,last,有序。

看到Hash,就要想到hashCode,equals,无序。

看到Tree,就要想到两个接口。Comparable,Comparator,可排序。

转载于:https://juejin.im/post/5b9619e0f265da0aed560348

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值