Java集合学习笔记

    喜欢在周六的晚上写点东西,因为休息了一天,明天还不用上班,爽翻。这个时间不做点笔记真是浪费了,嘻嘻。。。

    本次的主人公是Java 集合: Collection 以及Map .相信懂点Java的盆友都知道这些是Java基础必备的。不多BB了,正题:

        (以下内容讲的都是常用的一些集合类,如有不全,欢迎码友补齐。说的不对的地方,欢迎纠正,嘻嘻....)

1、Collection<E> 接口 

     简单的说Collection 主要分为 List<E> interface 和 Set<E> interface 两种实现,这两种实现的主要区别在于List 存储元素是有序可重复的,而Set相反 。具体请着往下看:

  • interface List<E> 的实现

    • class ArrayList<E>   底层实现是数组,ArrayList实例都有一个容量。该容量是指用来存储列表元素的数组的大小。特点:方面查询,然而插入和删除较慢.  

    List list = Collections.synchronizedList(new ArrayList(...)); // 同步
    • class LinkedList<E> 底层实现是链表 。特点:较快的插入和删除,查询慢。

    List list = Collections.synchronizedList(new LinkedList(...)); // 同步
  • interface Set<E> 的实现类

    • class HashSet<E> (常用) 底层是对HashMap的实现,可以说HashSet<E> 存的元素就相当于HashMap<K,V>的Key 。建议HashSet和HashMap的看看源代码 。特点 :快速查询,无序无重复,且存储的元素必须重写hashCode() 方法。

    • TreeSet<E> 保证了Set中的元素是有序的,具体的排序规则需要实现Comparable接口

    • LinkedHashSet<E> 具有HashSet的查询速度,且有序(按照元素插入的顺序保存)也必须定义HashCode()方法

2、interface Map<K,V>  的实现类

  • AbstractMap<K,V>

    • HashMap<K,V>(常用) 的K,V都是存在内部类Entry[]里 , 也就是说Map的第一层是数组,用来存一个个Entry<K,V>的 . 具有相同hashCode()值的K存在同一个数组,为了保证不冲突,所以 HashMap 的第二层是链表。 (感觉这个东西在这很难让大家立马理解,给个链接,有兴趣自己可以去研究一下 HashMap<K,V>)

    • TreeMap<K,V> 

    • LinkedHashMap<K,V> 这个挺好玩的,有个最近最少使用算法(LRU)访问的越多,元素自动排序越靠后。

3、集合工具类 Collections、Arrays

        这个给链接把(点这里),有点晚了,给老婆暖被子去咯。嘎嘎。。。。。。


你可能感兴趣的:(Java集合框架)