Java功能丰富的集合类向我们展示了Java在数据结构方面编程的强大功能,而功能如此强大的集合类,正是源自于Java具有的面向对象思想特性。
归纳起来讲,Java的集合可以分为两类,第一类是以数组为代表,这类集合可以描述线性表类型的数据结构,第二类是以Map为代表,这类集合可以描述“键值对”类型的数据结构。
描述第一类数据结构的集合是以Collection为基类,在Collection类里,封装了线性表的插入、删除等基本操作;而数据结构的集合是以Map为基类。两类集合分别通过继承和扩展这两个基类,可以逐渐细化,从而得到诸如堆栈和哈希表之类的数据集合对象。
其中需要了解的集合类和辅助类包括如下:
Collections |
|
Arrays |
|
ArrayList |
|
LinkedList |
|
HashMap |
|
LinkedHashMap |
|
TreeMap |
|
WeakHashMap |
|
IdentityHashMap |
|
HashTable |
|
HashSet |
|
LinkedHashSet |
|
TreeSet |
|
EnumMap |
|
EnumSet |
|
BitSet |
|
Vector(可视为动态数组的实现,同时可以实现动态增长的功能) |
|
Stack |
|
Queue(接口) |
|
PriorityQueue |
|
ArrayDeque |
其中,Collections 和 Arrays 两个辅助类帮助数组和容器类的排序、复制等等的操作,同时使得两者之间的转换变得如此的得心应手。
EnumMap和EnumSet则是为了枚举类而设置的哈希类,方便使用。
其他的容器类则根据实际情况来使用,不过需要注意的是:
1. List,Map,Set是不同步的(如果多个线程同时访问一个容器类实例,而其中至少一个线程从结构上修改了该实例,则它必须保持外部同步。这一般通过对自然封装该列表的对象进行同步操作来完成。如果不存在这样的对象,则应该使用 Collections.synchronizedXXX 方法将该列表“包装”起来。这最好在创建时完成,以防止意外对列表进行不同步的访问。)
2. 快速失败(如果在迭代器创建后的任意时间从结构上修改了容器类实例(通过迭代器自身的 remove 或 add 方法之外的任何其他方式),则迭代器将抛出异常。迭代器很快就完全失败,而不是冒着在将来不确定的时间任意发生不确定行为的风险)
3. BitSet, EnumMap, EnumSet, HashTable不允许插入null值
4. 除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。
5. 在Hash表中,有两个概念是非常重要的:equals 和 hashCode。这两个概念才使得Hash表的实现成为了可能。
6. Map的迭代方式有两种:一是普通的iterator方法来逐一遍历,二是通过entrySet来实现。如:
Map<String,String> map = new HashMap<String,String>(){{
this.put("1", "1"); this.put("2", "2");
this.put("3", "3"); this.put("4", "4");
this.put("5", "5"); this.put("6", "6");
}};
Set<Entry<String, String>> set = map.entrySet();
Iterator<Entry<String, String>> iter = set.iterator();
while(iter.hasNext()){
Entry<String,String> entry = iter.next();
System.out.print("key:"+entry.getKey()+", ");
System.out.println("value:"+entry.getValue());
}
分享到:
相关推荐
JAVA 容器类应用JAVA 容器类应用JAVA 容器类应用JAVA 容器类应用JAVA 容器类应用JAVA 容器类应用JAVA 容器类应用
java 容器类 集合类 Collection 你懂了吗
主要是介绍java容器的相关信息,是初学者很好的学习材料
该资源为本人面试前整理的Java容器类的资料,分析描述了Collection、List、ArrayList、Vector及map、HashTable、HashMap区别,可用来复习。
Java应用:两种Java容器类List和Set分析
容器类研究与分析,总结了经常遇到的困惑,适合初学者了解java容器类。希望能对你学习java有所帮助!
Java容器类学习心得.pdf
Java容器类PPT课件.pptx
Java容器类学习教案.pptx
Java容器类PPT学习教案.pptx
Java容器类的教学实践与思考
java 集合类 容器类 Collection 很让人费解的东西
题目摘要:考虑下列的信息系统。出版社需要记录下列书籍和作者的信息: P1: 每一本书有一个title,一个description和一个ISBN number 还有 出版的日期(包括年/月) P2: 每一本书有1个或多个作者。...
1结合GUI包在DOS窗口具有添加作者和书籍的功能。(做成GUI界面) 2具有查询一本书所有作者基本信息的功能。包括我只想查某一个属性 3具有查询一个作者所有书目的功能 4 具有对所有书目按客户指定类型排序的功能 ...
List、ArrayList、Vector及map、HashTable、HashMap的区别与用法 使用容器排序 Vector由于使用了synchronized方法(线程安全)
主要介绍了java容器类知识点详细总结,
java
1. Collection接口 3. Queue与Deque接口 6. 实现类小结 7. 迭代器 1. Collection接口