Java集合框架应用
2015-11-30 15:59
459 查看
一、集合框架整体介绍
集合框架可以大致分为两大家族:Collection、Map。
1、Collection家族
![](http://dl2.iteye.com/upload/attachment/0096/7511/030fccf1-f6ac-388a-9625-684b8a00d21a.jpg)
2、Map家族
![](http://dl2.iteye.com/upload/attachment/0096/7513/b87ab0e6-82e4-36c2-9f88-e81673a31e55.jpg)
相关博文:http://jianshi-dlw.iteye.com/blog/1179834(框架成员详细介绍)
二、具体场景下集合的选择
1. 集合中元素已知:优先考虑采用数组。
2. 集合中元素个数未知,且需要根据索引存取数据:采用ArrayList。
3. 集合中元素个数未知,且需要频繁插入和删除数据:采用LinkedList。
4. 集合中元素要求不重复,且没有顺序要求:采用HashSet。
5. 集合中元素要求不重复,且要求按插入顺序对集合进行遍历:采用LinkedSet。
6. 集合中元素要求不重复,且需要进行排序:采用TreeSet可SortedSet。
7. 集合中元素存在映射关系,且无顺序要求:采用HashMap。
8. 集合中元素存在映射关系,且需要按插入顺序进行遍历时:采用LinkedHashMap。
9. 集合中元素存在映射关系,且需要进行排序时:采用TreeMap或SortedMap。
10. 集合中元素个数未知,且需在多线程环境下进行集合元素的操作:采用Vector。
11. 集合中元素存在映射关系,且要求在多线程环境进行集合的操作:采用ConcurrentHashMap或HashTable。
三、实际应用
1.数组
(1)数组复制:Arrays.copyof()方法。
(2)数组转成列表:Arrays.asList()方法。
2.集合(Collection家庭成员)
(1)集合转成数组:toArray()方法。
(2)集合与集合间的合并:addAll()方法。
(3)判断是否包含某个元素:contains()方法。
(4)两个集合求交集:retainAll()方法。
(5)集合去除另一集合中包含的元素:removeAll()方法。
3.集合(Map家庭成员)
(1)Map的遍历:先调用entrySet()得到Set<Map.Entry<K,V>>集合,再调用iterator()进行迭代遍历;或者直接使用foreach()进行遍历。
(2)得到映射表中所有的value值:values()方法。
(3)判断是否包含key:containsKey()方法。
(4)删除某个映射关系:remove()方法。
4、扩展
(1)Set:set保证元素唯一的方法是根据equals方法进行判断,若希望set按照自定义的方式进行唯一性判断,需重写equals和hashCode方法。(写法可参考《Effective Java》第二版第8、9条)
(2)JDK自带的集合类已经非常全面,但是有些时候还是不够满足需求,这时可自行扩展或直接使用Apache的common-collections包。common-collections包非常强大,几乎包括了所有集合常用情况的解决方案,所以在想自己扩展集合框架的时候就直接把common-collections拿来用吧。(官网地址:http://commons.apache.org/proper/commons-collections/)
![](http://dl2.iteye.com/upload/attachment/0096/7511/030fccf1-f6ac-388a-9625-684b8a00d21a-thumb.jpg)
大小: 45.4 KB
![](http://dl2.iteye.com/upload/attachment/0096/7513/b87ab0e6-82e4-36c2-9f88-e81673a31e55-thumb.jpg)
大小: 18.3 KB
查看图片附件
集合框架可以大致分为两大家族:Collection、Map。
1、Collection家族
![](http://dl2.iteye.com/upload/attachment/0096/7511/030fccf1-f6ac-388a-9625-684b8a00d21a.jpg)
2、Map家族
![](http://dl2.iteye.com/upload/attachment/0096/7513/b87ab0e6-82e4-36c2-9f88-e81673a31e55.jpg)
相关博文:http://jianshi-dlw.iteye.com/blog/1179834(框架成员详细介绍)
二、具体场景下集合的选择
1. 集合中元素已知:优先考虑采用数组。
2. 集合中元素个数未知,且需要根据索引存取数据:采用ArrayList。
3. 集合中元素个数未知,且需要频繁插入和删除数据:采用LinkedList。
4. 集合中元素要求不重复,且没有顺序要求:采用HashSet。
5. 集合中元素要求不重复,且要求按插入顺序对集合进行遍历:采用LinkedSet。
6. 集合中元素要求不重复,且需要进行排序:采用TreeSet可SortedSet。
7. 集合中元素存在映射关系,且无顺序要求:采用HashMap。
8. 集合中元素存在映射关系,且需要按插入顺序进行遍历时:采用LinkedHashMap。
9. 集合中元素存在映射关系,且需要进行排序时:采用TreeMap或SortedMap。
10. 集合中元素个数未知,且需在多线程环境下进行集合元素的操作:采用Vector。
11. 集合中元素存在映射关系,且要求在多线程环境进行集合的操作:采用ConcurrentHashMap或HashTable。
三、实际应用
1.数组
(1)数组复制:Arrays.copyof()方法。
(2)数组转成列表:Arrays.asList()方法。
2.集合(Collection家庭成员)
(1)集合转成数组:toArray()方法。
(2)集合与集合间的合并:addAll()方法。
(3)判断是否包含某个元素:contains()方法。
(4)两个集合求交集:retainAll()方法。
(5)集合去除另一集合中包含的元素:removeAll()方法。
3.集合(Map家庭成员)
(1)Map的遍历:先调用entrySet()得到Set<Map.Entry<K,V>>集合,再调用iterator()进行迭代遍历;或者直接使用foreach()进行遍历。
(2)得到映射表中所有的value值:values()方法。
(3)判断是否包含key:containsKey()方法。
(4)删除某个映射关系:remove()方法。
4、扩展
(1)Set:set保证元素唯一的方法是根据equals方法进行判断,若希望set按照自定义的方式进行唯一性判断,需重写equals和hashCode方法。(写法可参考《Effective Java》第二版第8、9条)
(2)JDK自带的集合类已经非常全面,但是有些时候还是不够满足需求,这时可自行扩展或直接使用Apache的common-collections包。common-collections包非常强大,几乎包括了所有集合常用情况的解决方案,所以在想自己扩展集合框架的时候就直接把common-collections拿来用吧。(官网地址:http://commons.apache.org/proper/commons-collections/)
![](http://dl2.iteye.com/upload/attachment/0096/7511/030fccf1-f6ac-388a-9625-684b8a00d21a-thumb.jpg)
大小: 45.4 KB
![](http://dl2.iteye.com/upload/attachment/0096/7513/b87ab0e6-82e4-36c2-9f88-e81673a31e55-thumb.jpg)
大小: 18.3 KB
查看图片附件
相关文章推荐
- Selection sort
- Spring 注解 之 @Transactional
- Spring注解注入
- 从Java类库看设计模式(5)
- wsdl2java根据WSDL文件生成java文件
- 从Java类库看设计模式(4)
- 关于struts2框架与MVC之间关系的分析
- java 深入技术二(Collection)
- Java 文件IO
- 从Java类库看设计模式(3)
- 从Java类库看设计模式(2)
- Java调试信息输出
- 从Java类库看设计模式(1)
- Looking "Under the Hood" with javap
- 《JAVA与模式》之责任链模式
- JAVA关键字NULL小谈
- springMVC 项目搭建
- Java并发的四种风味:Thread、Executor、ForkJoin和Actor
- Struts2HelloWorld例子编写步骤
- Java中的参数传递问题