java复习之集合

来源:互联网 发布:网络虚拟手机号 编辑:程序博客网 时间:2024/05/16 15:58

java.utls包中提供了一些集合类,集合相当于一个容器,提到容器又不得不提到数组,数组也是容器
本片博客将分为以下几点

  • 集合与数组的区别
  • List集合
  • set集合
  • map集合
  • 集合之间的对比

    先来一张集合类的集成关系图,画的不好,但是能明白要表达的意思
    这里写图片描述

  • 集合与数组的区别

    集合的长度是可变的,数组的长度是固定的【可以简单理解为瓶子大小不一样】
    集合可存放对象,而数组用来存放基本数据类型【可以简单理解为装东西的类型不一样】

collection是一个接口。是list和set的父类,提供了添加元素,删除元素和管理数据的方法,由于List和Set都继承了collection接口因此都具有这些方法,这些方法为add,remove,isEmpty,iterator(遍历集合的方法),size

  • List集合
    List集合的特点
    List集合中的元素允许重复且有序,顺序是按元素插入的顺序排列,可通过索引即元素在集合中的位置来访问集合中的元素

List集合的实现类有ArrayList和LinkedList

ArrayList集合的特点

实现可变数组,并可以通过索引位置对集合进行快速的随机访问

缺点为通过指定位置插入或删除对象的速度较慢

LinkedList的特点

采用链表结构保存对象,便于向集合中插入或删除元素

缺点为随机访问集合中的数据的效率比较低

从ArrayList和LinkedList的特点来看它们的优缺点是互补的

  • Set集合
    Set集合的特点
    set集合中不能包含重复的元素,并且是无序的
    它有两个实现类hashSet和TreeSet
    HashSet的特点:不保证set的顺序,特别是不保证改顺序永久不变
    TreeSet实现了SortedSet接口,因此,TreeSet类实现的Set集合在遍历集合时按照自然顺序递增排序,也可以按照指定比较器递增排序,也就是说比较器可以对TreeSet类实现的Set集合中的对象进行递增排序

  • 简单总结List和Set
    通过上面的理解,可以得出,List集合是可重复的有序的,Set集合是排重的无序的,ArrayList的优点是便于根据索引快速的对集合进行随机访问,缺点是插入和删除对象的效率低而LinkedList恰恰相反,对集合进行随机访问效率的但插入和删除元素效率高,HashSet不能保证顺序,单数TreeSet可以通过比较器递增排序

  • map集合
    map集合没有继承collection接口,提供key到value的映射,一个key对应一个值,key是唯一的,同时key还决定了存储对象在映射中的存储位置

  • map接口中常用的方法
    put(K key,V value):向集合中添加指定的key与value的映射
    containsKey(Object key):如果此映射包含指定key的映射则返回true
    containsValue(Object value):如果一个或多个key映射到指定值,则返回true,
    get(Object key)如果存在指定的key,则返回该对象对应的值,否则返回null
    KeySet()返回该集合中的所有的key对象形成的Set集合
    value():返回该集合中所有值对象形成的collection集合

  • map集合有两个实现类hashmap和TreeMap
    hashmap能够对其内部的映射关系进行快速查找,但是不能保证映射顺序,,这一点与hashSet很像,允许使用null值和null键。
    TreeMap不仅实现了map还实现了SortedMap接口,集合中的顺序具有一定的顺序,但是但是添加删除和定位映射关系的性能较差,这一点与TreeSet也很像,TreeMap类实现的map集合中的映射关系是根据键对象进行一定的排序,因此不允许键对象是null

  • 小小总结map
    hashmap:查找快,无序
    TreeMap:查找慢,有序

-最后小小总结集合
List集合中的数据是可重复的有序的,其数据的顺序就是对象插入时的顺序,可通过索引,也就是元素所在位置快速的访问元素中的集合,

Set集合中的数据是排重的,无序的

map集合是以键值对的形式保存数据,其提供的是key到value的映射,key具有唯一性,map中不能包含相同的key,一个key只能对应一个值

工作中使用List集合中的ArrayList比较多,hashMap其次,其他使用较少
集合就简单复习到这里,以后还有更深的了解再继续。。。。

0 0