您的位置:首页 > 职场人生

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

2015-03-01 14:07 155 查看
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 值来决定该元素的存储位置。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: