1.结构图
Collection 有序的集合
├------List 接口
│ ├LinkedList 链表 (异步, 线程非安全)
│ ├ArrayList 顺序结构动态数组类 (异步, 线程非安全)
│ └Vector 向量(同步, 线程安全)
│ └Stack 栈 (后进先出)
└Set 接口
Map 接口
├Hashtable (同步, 线程安全)
├HashMap (异步, 线程非安全)
└WeakHashMap
2.
List, 有序,接口,允许有相同元素
ArrayList,数组结构,添加删除需要移动它之后的数据,遍历可以用二分,可变大小,允许为null
LinkedList,链表结构,添加删除数据不用移动数据,只能顺序遍历
Vector,
Set,不包含重复元素,最有有一个null元素
HashMap,允许为null,效率高
HashTable,底层是哈希表,不可以存null
因为同步需要花费机器时间,所以Vector和HashTable的执行效率要低于 ArrayList和HashMap
TreeMap,底层是二叉树,线程不同步,可以用于给map集合中的键进行排序
3.如何遍历Collection中的每一个元素
不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,
使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下:
Iterator it = collection.iterator(); // 获得一个迭代子
while(it.hasNext()) {
Object obj = it.next(); // 得到下一个元素
}
4.对list进行排序
/**
* 对list进行排序
* @param list
* @param by 排序项
* @param d 0、升序;1、降序
* @return
*/
public static List<HashMap<String, Object>> orderList(
List<HashMap<String, Object>> list, String by, int d) {
DefineComparator comparator = new DefineComparator(by, d);
Collections.sort(list, comparator);
return list;
}
public class DefineComparator implements Comparator<HashMap<String, Object>> {
private String order;
private int direction;//0、升序,1、降序
public DefineComparator(String string, int dir) {
super();
// TODO Auto-generated constructor stub
order = string;
direction = dir;
}
@Override
public int compare(HashMap<String, Object> lhs, HashMap<String, Object> rhs) {
// TODO Auto-generated method stub
double one = Double.valueOf(lhs.get(order).toString());
double two = Double.valueOf(rhs.get(order).toString());
if(direction == 0){
if(one > two) return 1;
if(one < two) return -1;
}else if(direction==1){
if(one > two) return -1;
if(one < two) return 1;
}
return 0;
}
public void setDir(int dir){
direction = dir;
}
}
5.keySet和entrySet
// 第一种取出方式keySet
Set<Student> keySet = hm.keySet();
Iterator<Student> iterator = keySet.iterator();
while (iterator.hasNext()) {
Student student = iterator.next();
String addr = hm.get(student);
System.out.println(student + ":" + addr);
}
//第二种取出方式 entrySet
Set<Entry<Student, String>> entrySet = hm.entrySet();
Iterator<Entry<Student, String>> iterator2 = entrySet.iterator();
while (iterator2.hasNext()) {
Entry<Student, String> next = iterator2.next();
System.out.println(next.getKey()+":"+next.getValue());
}
文章 http://blog.youkuaiyun.com/qq_26787115/article/details/51762397 Map,keySet,entrySet