java集合类(笔试工)
java集合类(笔试用)
- 概述
先上图:
两条分支: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效率更高。