java常用集合框架类图:

一句话描述常用集合
摘自《JAVA核心技术I》
ArrayList 一种可以动态增长和缩减的索引序列
LinkedList 一种可以在任何位置进行高效地插入和删除操作的有序序列
HashSet 一种没有重复元素的无序集合
TreeSet 一种有序集
EnumSet 一种包含枚举类型值得集
LinkedHashSet 一种可以记住元素插入次序的集
HashMap 一种存储键/值关联的数据结构
TreeMap 一种键值有序排列的映射表
EnumMap 一种键值属于枚举类型的映射表
LinkedHashMap 一种可以记住键/值添加次序的映射表
WeakHashMap 一种其值无用武之地后可以被垃圾回收器回收的映射表
ArrayList和LinkedList的区别
参考http://blog.youkuaiyun.com/qianzhiyong111/article/details/6678035
http://www.importnew.com/6629.html
1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
结论:
对于需要快速插入,删除元素,应该使用LinkedList。
对于需要快速随机访问元素,应该使用ArrayList。
HashMap与Hashtable的区别
参考http://blog.youkuaiyun.com/qianzhiyong111/article/details/6677885
- HashMap允许key和value为null,Hashtable不允许key和value为null;
- HashMap不是线程同步的,Hashtable是线程同步的;
- HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。
HashMap的遍历
- 使用keySet,for-each,HashMap.get()
- 使用entry
package com.example.collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class MapTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Map<String,String> hashMap = new HashMap<String,String>();
hashMap.put("China", "Chinese");
hashMap.put("America", "English");
hashMap.put("Germany", "German");
hashMap.put("France", "French");
//第一种遍历,使用keySet,for-each,HashMap.get()
System.out.println("*****first keySet*****");
Set<String> keys = hashMap.keySet();
for(String key : keys) {
System.out.println("key: " + key + ", value: " + hashMap.get(key));
}
//第二种,使用entry
System.out.println("*****second entry*****");
for(Map.Entry<String, String> entry : hashMap.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
System.out.println("key: " + key + ", value: " + value);
}
}
}
本文深入解析了Java集合框架中的主要类,包括ArrayList、LinkedList、HashSet等,并对比了ArrayList与LinkedList、HashMap与Hashtable的区别。通过实例演示了HashMap的两种遍历方式。
1585

被折叠的 条评论
为什么被折叠?



