集合的基本区别

  1. arraylist:   有序,可以重复,查询效率高,插入效率低。线程不安全,底层是数组。
  2. linkedList:  有序,可以重复,查询效率低,插入效率高,线程不安全,底层是链表。
  3. vector: 有序,可以重复,底层是数组,所有方法都加了锁,是线程安全的。
  4. set:  无序的(无序指的是没有索引的概念),不能重复,通过equesl判断 如果是true 就不能加入。最多只能有一个是null,
  5. map:键值对的方式存储数据,允许有个一个key是null,如果第二个key进来会把原来的key覆盖掉,也就是说键不能重复,但是value能重复,也可以是多个value,线程不安全。
  6. hashtable: 与hashmap的用法一样,就是不允许key或者value的值是null。线程安全
  7. hashset:  无序的,不能重复,里面有个map属性,这就是HashSet的核心秘密。我们再看add()方法,发现增加一个元素说白了就是在map中增加一个键值对,键对象就是这个元素,值对象是名为PRESENT的Object对象。说白了,就是“往set中加入元素,本质就是把这个元素作为key加入到了内部的map中”,由于map的key不能重复,所以hashset肯定不能重复
  8. Queue: 队列,先进先出,LinkedList类实现了Queue接口,add(),remove(),element(),这些方法操作失败到时候会抛出异常。但是poll()返回队列用第一个元素并删除。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章