美文网首页
Java 常用集合

Java 常用集合

作者: littlenewus | 来源:发表于2018-09-01 11:31 被阅读0次

---|Collection: 单列集合,定义了最常规的操作方法

          ---|List: 有存储顺序, 可重复

              ---|ArrayList:    数组实现, 查找快, 增删慢                         

              ---|LinkedList:   链表实现, 增删快, 查找慢实现了栈 队列  

              ---|Vector:   和ArrayList原理相同, 但线程安全, 效率略低

---| Stack 类

           ---|Set: 无存储顺序, 不可重复

              ---|HashSet  线程不安全,存取速度快。底层是以哈希表实现的

              ---|TreeSet  红-黑树的数据结构,默认对元素进行自然排序(String)。如果在比较的时候两个对象返回值为0,,那么元素重复。 Comparable,Comparator。

              ---|LinkedHashSet

---| Map: 键值对

      ---|HashMap 采用哈希表实现,所以无序

---|TreeMap 可以对键值进行排序

---|HashTable 线程同步

       ---|LinkedHashMap 对Map集合进行增删提高效率


Collection 定义了最基本的操作方法:

1、增加(add/addAll)        

 2、删除(remove/removeAll/clear/retainAll)

3、查询(contain/containAll/iterator/size/isEmpty 

4、转数组(toArray/toArray(T[]))

AbstractCollection Collection的一个实现类,实现了Collection的方法,

https://www.cnblogs.com/android-blogs/p/5566212.html

其中,比较有趣的地方:

 privatestaticfinalintMAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;

-8是因为数组对象的头部会占用这8个字节


List


List接口相对Collection扩展了几个方法:

indexOf(),lastIndexOf(),subList(),set()



AbstractList

public abstract class AbstractList extends AbstractCollection implements List

继承自AbstractCollectio 实现了 List的接口 

其中 

checkForComodification 用于检测列表是否在其它线程被修改

final void checkForComodification() {

            if (modCount != expectedModCount)

                throw new ConcurrentModificationException();

        }


ArrayList

详细介绍: https://www.cnblogs.com/xujian2014/p/4625346.html


Set


AbstractSet 继承了AbstractCollection实现了Set接口

AbstractSet的Hash值是所有元素的hash值的总和 

Java中的Hash原理:取数据内容的每个char值按照一个算法做运算得到的值,例如String的hash算法就比较简单:

public int hashCode() {

      int h = hash; 

      if (h == 0 && value.length > 0) { 

          char val[] = value; 

            for (int i = 0; i < value.length; i++) { 

              h = 31 * h + val[i]; 

          } 

           hash = h; 

      } 

      return h; 

  } 


HashSet

HashSet不能添加重复的元素,当调用add(Object)方法时候,

首先会调用Object的hashCode方法判hashCode是否已经存在,如不存在则直接插入元素;

如果已存在则调用Object对象的equals方法判断是否返回true,如果为true则说明元素已经存在,如为false则插入元素。

HashSet底层数据实现用HashMap,那每次插入的数据其实只放在haspmap的key当中,而hashmap存的value都固定为一个空置Object

// PRESENT是向map中插入key-value对应的value 13

// 因为HashSet中只需要用到key,而HashMap是key-value键值对; 14

// 所以,向map中添加键值对时,键值对的值固定是PRESENT 15

private static final Object PRESENT =new Object();

http://www.cnblogs.com/skywang12345/p/3311252.html


Map

 更完整的解析

https://blog.csdn.net/panweiwei1994/article/details/77185902


相关文章

  • Java基础之Collection集合

    标题常用集合 Java集合中,几个常用集合关系图 Collection单列集合中常用集中集合关系 Collecti...

  • Java基础之集合类

    Java基础之集合类 集合类简单介绍 Java集合是Java提供的工具包,包含了常用的数据结构:集合、链表、队列、...

  • Java集合干货系列-集合总体大纲

    前言 Java集合是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。Java集合工...

  • Vector

    Java集合 Java集合是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。Jav...

  • Java基础(二)

    Java要点2 JAVA 集合类 1.JAVA常用集合类功能、区别和性能 两大类:Collections,Map;...

  • 集合概述

    一:集合的UML类图 二:集合工具的分析 (Java集合是java提供的工具) 常用的数据结构: 集合、链表、队列...

  • Java并发包之ConcurrentHashMap

    之前整理了一份Java中常用的集合类的基本特性:Java常用集合类图解详细介绍了HashMap:HashMap之浅...

  • Java 集合工具包

    Java 集合工具包 Java集合是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等...

  • Java 集合框架

    Java集合是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。Java集合工具包位...

  • Collection、Map总体框架

    java集合是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。Java集合工具包位...

网友评论

      本文标题:Java 常用集合

      本文链接:https://www.haomeiwen.com/subject/ofgewftx.html