(13)2017.8.14-集合框架(泛型)

来源:互联网 发布:jsmd5解密算法 编辑:程序博客网 时间:2024/06/05 17:25

Java 集合框架共有三大类接口: List、Set、Map,如下图所示:


我们先来看list,List 是接口存储一组不唯一,有序(插入顺序)的对象。 list接口下又包含了ArrayList和linkedlist,

ArrayList 类实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高。

LinkedList 类采用链表存储方式。插入、删除元素时效率比较高。


接下来我们来说Set接口,Set 接口存储一组唯一,无序的对象。 HashSet 是 Set 接口常用的实现类。 HashSet 允许集合元素值为 null 操作数据的方法与 List 类似,Set 接口不存在 get()方法。 

Iterator 接口表示对集合进行迭代的迭代器,专门实现集合的遍历。

使用方法为: hasNext():判断是否存在另一个可访问的元素 

 next():返回要访问的下一个元素   ,我们来看一下API发现他还有第三种方法那就是


执行remove操作,可以删除迭代器迭代到的最后一个元素。

HashSet 和 List 的比较

HashSet 是不重复的而且是无序的!一般用 HashSet 要重写 hashCode 和 equals 方法。 唯一性保证.重复对象 equals 方法返回为 true,重复对象 hashCode 方法返回相同的整

数 HashSet 其实就是一个 HashMap,只是你只能通过 Set 接口操作这个 HashMap 的 key 部分, 

ArrayList 是可重复的有序的,特点:

查询效率高,增删效率低 轻量级 线程不安全。 

arraylist:在数据的插入和删除方面速度不佳,但是在随意提取方面较快

Map接口:

• HashMap 是 Map 接口中最常见的实现类。  

• 存储一组成对的键-值对象,提供 key(键)到 value(值)的映射,通过 key 来索引 

key 不允许重复 value 允许重复 

添加的对象将转换为 Object 类型

Map 集合转换为 list 集合是调用Map.Entry

Map.Entry 描述在一个 Map 中的一个元素(键/值对)。是一个 Map 的内部类 .

这里需要声明一下,map接口没有iterator迭代器,如果他想使用迭代器可以将其强制转换成HashSet方法。

因为Map接口的底层函数是Set接口,而List接口地城函数则是数组。