- 概述
先上图:
两条分支:Collection和Map
Collection接口没有实现类,有两个接口:Set和List
Set 无序,没有重复元素 SortedSet升序排列的Set,实现类是TreeSet
List 有序,可以有重复元素
Map接口实现类HashMap SortedMap按key的升序排列,实现类是TreeMap
TreeSet和TreeMap的排序规则要实现对象的hashCode和equals方法,速度比HashSet和HashMap慢,所以不需排序的时候使用后者
- List
ArrayList:数据结构为数组,方便取得固定下标的元素
LinkedList:数据结构为双向列表,方便在List中插入、删除操作
List转换为数组
List list = new ArrayList();
list.add("a");
list.add("b");
list.add("c");
Object[] objs = list.toArray();
数组转换为List
String[] s = new String[]{"a","b","c"};
List list = Arrays.asList(s);
可以用Collections类操作List
Collections.sort();
List里面的对象要实现Comparable接口
- Set
根据对象的散列值存储,需实现对象的hashCode()和equals()方法
两个实现类HashSet和LinkedHashSet,区别类似ArrayList和LinkedList
- 使用迭代器遍历Collection
public void print(Collection c){
Iterator it = c.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
- Map
遍历map的两种方式
第一种:
Set keys = map.keySet();
Iterator it = keys.iterator();
while(it.hasNext()){
Object key = it.next();
System.out.println("key:"+key+",value:"+map.get(key));
}
第二种:
Set entry = map.entrySet();
System.out.println(entry);
Iterator it = entry.iterator();
while(it.hasNext()){
Entry me = (Entry)it.next();
System.out.println("key:"+me.getKey()+",value:"+me.getValue());
}
- Vector和HashTable
在多线程中涉及同步问题,Vector和HashTable是同步的。如果不是多线程中,采用ArrayList和HashMap效率更高。