现在的位置: 首页 > 综合 > 正文

java collections framework —–List,Set,Map总结

2013年09月04日 ⁄ 综合 ⁄ 共 2149字 ⁄ 字号 评论关闭

     在jdk提供的List,Set,Map实现中,Set类型依赖于Map的存储方式,Map对象采用树形结构以及哈希(散列表)结构存储;List对象则依赖于数组和链表结构。

 

     类型                     实现类                             存储结构

     List                      ArrayList                         数组

                                LinkedList                        链表

     Set                      HashSet                          哈希(散列)表

                                TreeSet                           树形结构

     Map                     HashMap                         哈希(散列)表

                                 TreeMap                           树形结构

 

 List类型存放的数据不要求唯一,即在List中的数据可以有多个数据是相同的,即list.get(i).equals(list.get(j))=true(i!=j).

 Set类型存放的数据必须是唯一的,即在List中不可能存在多个数据相同的情况,如果存放相同的数据进入Set类型中,后一个数据将覆盖前一个数据。

 Map采用的是K-V的存放方式,在Map对象中,Key是不允许重复,如果重复,后一个key覆盖前个key,但是Value是可以重复的。

 

 在工作当中如何选用相应的数据对象可根据数据存储的需求做出选择。如存储数据可能有重复的数据,那么就不能选择set的存储方式,而采用Map或者List。

 

  当然List,Set,Map在存放数据时都有优点和缺点。

实现类                           存储结构                          优点                                                       缺点

ArrayList                       数组                               能够快速的查询,插入少量数据。            插入大量数据以及移除数据时性能较低。

 

LinkedList                     链表                               能够快速的插入,移除                           查询数据时性能不及ArrayList

 

HashSet                       哈希                                在存储数据过程中性能都比较理想            哈希是存在数据冲突的情况,这中情况

                                                                                                                                   虽然少见但存放大量数据时时不可避免

                                                                                                                                   在初始化时如果不设定容量大小,默认

                                                                                                                                   大小为2的30次方,浪费空间,如果设

                                                                                                                                   定大小,又需要用户估计数据量。

 

TreeSet                        树形                              插入,移除效率都不错                             查询数据效率不及HashSet.

 

HashMap   同HashSet

TreeMap    同TreeSet

 

结后语:这段时间项目空闲期,阅读了一下常用的collections类型,感觉还不错,体会到“阅读源代码确实是提高代码质量的最佳方法”,目前准备阅读一下collections框架中的排序以及Iterator接口。

 

 

抱歉!评论已关闭.