Java集合框架
来源:互联网 发布:精业本草官方淘宝店 编辑:程序博客网 时间:2024/05/30 23:32
原文:http://blog.csdn.net/ns_code/article/details/35564663
java集合框架整体类图如下:
从上图中可以看出,集合类主要分为两大类:Collection和Map。
Collection是List、Set等集合高度抽象出来的接口,它包含了这些集合的基本操作,它主要又分为两大部分:List和Set。
1.List:
List接口通常表示一个列表(数组、队列、链表、栈等),list是一个有序的集合,其中的元素可以重复,访问集合中的元素可以根据元素的索引来访问,常用实现类为ArrayList和LinkedList,另外还有不常用的Vector。另外,LinkedList还是实现了Queue接口,因此也可以作为队列使用。
(1)ArrayList(常用):基于数组实现,查询快,增删慢
(2)LinkedList:基于链表实现,查询慢,增删快
(3)Vector:基于数组实现,线程安全,有性能问题,很少使用
2.Set
Set接口通常表示一个集合,其中的元素不允许重复(通过hashcode和equals函数保证),访问集合中的元素只能根据元素本身来访问(也是不能集合里元素不允许重复的原因)。常用实现类有HashSet和TreeSet,HashSet是通过Map中的HashMap实现的,而TreeSet是通过Map中的TreeMap实现的。另外,TreeSet还实现了SortedSet接口,因此是有序的集合(集合中的元素要实现Comparable接口,并覆写Compartor函数才行)。
(1)HashSet(常用);基于HashMap实现,无序
(2)TreeSet:基于TreeMap实现
我们看到,抽象类AbstractCollection、AbstractList和AbstractSet分别实现了Collection、List和Set接口,这就是在Java集合框架中用的很多的适配器设计模式,用这些抽象类去实现接口,在抽象类中实现接口中的若干或全部方法,这样下面的一些类只需直接继承该抽象类,并实现自己需要的方法即可,而不用实现接口中的全部抽象方法。
3.Map
Map是一个映射接口,其中的每个元素都是一个key-value键值对,访问时只能根据每项元素的key来访问其value。同样抽象类AbstractMap通过适配器模式实现了Map接口中的大部分函数,TreeMap、HashMap、WeakHashMap等实现类都通过继承AbstractMap来实现,另外,不常用的HashTable直接实现了Map接口,它和Vector都是JDK1.0就引入的集合类。
(1)HashMap(常用): 基于数组和链表实现,随机存取
(2)TreeMap:基于红黑树实现
4.Iterator
Iterator是遍历集合的迭代器(不能遍历Map,只用来遍历Collection),Collection的实现类都实现了iterator()函数,它返回一个Iterator对象,用来遍历集合,ListIterator则专门用来遍历List。而Enumeration则是JDK1.0时引入的,作用与Iterator相同,但它的功能比Iterator要少,它只能再Hashtable、Vector和Stack中使用。
使用next()获得序列中的下一个元素, 使用hasNext()检查序列中是否还有元素, 使用remove()将迭代器新返回的元素删除。
/*迭代器用于while循环
list l = new ArrayList();
Iterator iter = l.iterator();
while(iter.hasNext()){
String str = (String) iter.next();
System.out.println(str);
}
*/
5.Arrays和Collections
Arrays和Collections是用来操作数组、集合的两个工具类,例如在ArrayList和Vector中大量调用了Arrays.Copyof()方法,而Collections中有很多静态方法可以返回各集合类的synchronized版本,即线程安全的版本,当然了,如果要用线程安全的结合类,首选Concurrent并发包下的对应的集合类,一般而言,非同步的类,性能比同步的要好。我们建议用Collections.synchronizedCollection(Collection c)方法去处理原本非同步的类,在不丢失性能的前提下,实现同步。Java1.5提供ConcurrentHashMap,适用于高并发的线程安全实现。
(1)Arrays
copyof把一个数组复制出一个新数组(新数组的长度为length)
sort方法,把数组中的元素按升序排序
BinarySearch:找到元素在数组当中的下标
……
(2)Collections
sort对集合进行排序
binarySearch 查找指定集合中的元素,返回所查找元素的索引
copy将集合n中的元素全部复制到m中,并且覆盖相应索引的元素
……
- Java集合:集合框架
- 【Java】java集合框架
- [Java]Java集合框架
- JAVA集合框架和集合
- 【集合】Java集合框架介绍
- Java集合之集合框架
- [集合]Java的集合框架 Collection集合
- Java集合框架 (一)
- Java集合框架 (二)
- Java集合框架(三)
- Java集合框架
- 也来谈Java集合框架
- 也来谈Java集合框架
- Java集合框架 (一)
- Java集合框架
- 也来谈Java集合框架
- java集合框架
- Java集合框架总结
- 机器学习(31)之频繁集挖掘FP Tree详解
- 生产环境批量自动安装系统
- 解决Eclipse 64位启动时,报jvm.dll错
- 一维数组的定义方式
- Python中的文件和流
- Java集合框架
- Pandans常用语法记录
- MS7024:TTL转CVBS/S-Video芯片方案
- 微程序控制器之微程序控制器构成
- 房地产虚拟现实系统--天悦湖畔iPad售楼VR系统
- 配置Git的SSH协议笔记
- list合并
- 【机器学习】Sklearn 调试模型
- python3 + OpenCV 开发环境搭建