黑马程序员——集合框架总结

来源:互联网 发布:excel分析股票数据 编辑:程序博客网 时间:2024/06/11 09:10
Java培训、Android培训、iOS培训、.Net培训、期待与您交流!
集合的根类是Collection
            |——List   元素有序的,元素可以重复。该集合体系有索引

        |——ArrayList:底层的数据结构使用的是数组结构。特点:查询速度快,但增删稍        慢,线程不同步

        |——LinkedList:底层的数据结构是链表数据结构。特点:增删速度快,查询稍慢

        |——Vector:底层是数组数据结构。线程同步,已被ArrayList替代

        |——Set:元素是无序的(存入和取出的顺序不一定一致),元素不可以重复。
        |——TreeSet可以对Set集合中的元素进行排序。 当主要条件一样时,一定要判断一下次要条件

        |——HashSet:底层的数据结构式哈希表。线程是非同步的
            HashSet是如何保证元素唯一性的呢?
            是通过元素的两个方法:hashCode和equals来完成的
            如果元素的hashCode值相同,才会判断equals是否为true
            如果元素的hashcode值不同,才会调用equals
            
            注意,对于判断元素是否存在,删除,添加等操作依赖的方法是hashcode和            equals方法

List特有的方法。凡是可以操作角标的方法都是该体系的方法。

增:
   add(index,element);
   addAll(index,Collection);
删:
   remove(index);
改:
   set(index,element);
查:
   get(index);
   subList(from,to);
   listIterator();
   int indexOf(obj);获取obj元素所在的位置。
   ListItertor  listIterator();

HashMap 和 HashSet 是 Java Collection Framework 的两个重要成员,其中 HashMap 是 Map 接口的常用实现类,HashSet 是 Set 接口的常用实现类。虽然 HashMap 和 HashSet 实现的接口规范不同,但它们底层的 Hash 存储机制完全一样,甚至 HashSet 本身就采用 HashMap 来实现的。

HashMap 的存储实现

当程序试图将多个 key-value 放入 HashMap 中时示例代码: HashMap 类的 put(K key , V value)
HashMap<String , Double> map = new HashMap<String , Double>();   
map.put("语文" , 80.0);   
map.put("数学" , 89.0);   
map.put("英语" , 78.2);
HashMap 采用一种所谓的“Hash 算法”来决定每个元素的存储位置。

当程序执行 map.put("语文" , 80.0); 时,系统将调用"语文"的 hashCode() 方法得到其 hashCode 值——每个 Java 对象都有 hashCode() 方法,都可通过该方法获得它的 hashCode 值。得到这个对象的 hashCode 值之后,系统会根据该 hashCode 值来决定该元素的存储位置。




0 0
原创粉丝点击