java常用集合框架类图:
一句话描述常用集合
摘自《JAVA核心技术I》
ArrayList 一种可以动态增长和缩减的索引序列
LinkedList 一种可以在任何位置进行高效地插入和删除操作的有序序列
HashSet 一种没有重复元素的无序集合
TreeSet 一种有序集
EnumSet 一种包含枚举类型值得集
LinkedHashSet 一种可以记住元素插入次序的集
HashMap 一种存储键/值关联的数据结构
TreeMap 一种键值有序排列的映射表
EnumMap 一种键值属于枚举类型的映射表
LinkedHashMap 一种可以记住键/值添加次序的映射表
WeakHashMap 一种其值无用武之地后可以被垃圾回收器回收的映射表
ArrayList和LinkedList的区别
参考http://blog.csdn.net/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.csdn.net/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);
}
}
}
转载请注明原文地址: https://ju.6miu.com/read-1296715.html