Java集合
Java集合分为Collection和Map
Collection是高度抽象的接口
Collection提供的方法:
size() 计算大小
add() 向集合中添加元素
addAll()向集合中添加一组集合
remove()从集合中删除某一个元素
removeAll()从集合中删除一组元素(去掉交集部分)
clear()清空集合中的所有元素
isEmpty()判断集合中是否有元素
retainAll()求两个集合的交集
contains()集合中是否包含某个元素
containsAll()集合中是否包含一组元素
equals()判断集合是否和某个对象相等
hashcode()求该集合的hash值
toArray()将集合转为数组
toArray<T[] a>()带泛型的数组转换
iterator()返回集合的迭代器
1、List:有序,可重复
每个元素有有其对应的顺序索引
- ArrayList
- LinkedList:插入和删除速度快
- Vector:古老的集合类,线程安全
Arrays.asList()返回的的List集合既不是ArrayList实例,也不是Vector实例,返回值是一个固定长度的List的集合
- List集合提供了根据索引来操作集合元素的方法:
void add(int index,Object ele)
boolean addAll(int index,Collection eles)
int indexOf(Object ele)
int lastIndexOf(Object ele)
Object get(int index)
Object remove(int index)
Object set(int index,Object ele)
List subList(int fromIndex,int toIndex) 左闭右开
- LinkedList新增的方法:
void addFirst(Object ele)
void addLast(Object ele)
Object getFirst()
Object getLast()
Object removeFirst()
Object removeLast()
2、Set接口:无序,不可重复
- HashSet:根据计算的hash值决定元素的存放位置,有很好的存取和查找性能
加入的对象需实现hashCode()和equals()方法,且这两个方法需保持一致
- LinkedHashSet:是HashSet的子类,使用链表来维护set的次序,这使得元素看起来是顺序保存的
LinkedHashSet的插入性能略低于HashSet,但在迭代访问Set里的全部元素时有很好的性能
- TreeSet:是SortedSet接口的实现类,可以确保集合处于排序状态
如果将一个对象加入TreeSet集合中,则必须实现Comparable接口
只能添加同一类型的对象
添加元素时,首先按照compareTo方法比较,一旦返回0,则程序认为这两个对象是一样的
所以,需确保compareTo,hashCode,equals方法三者保持一致
- 自然排序 调用集合的compareTo方法
- 定制排序 实现Coparator接口,重写compare方法
Map与Collection并列存在,用来存放具有映射关系的数据
key和value可以是任意类型的数据
Map中的key用set来存放,不允许重复,即同一个Map对象所对应的类,需重写hashCode和equals方法
HashMap提供的方法:
添加删除操作:
Object put(Object key,Object value)
Object remove(Object key)
void putAll(Map t)
void clear()
元素的查询操作:
Object get(Object key)
boolean containsKey(Object key)
boolean containsValue(Object value)
int size()
boolean isEmpty()
boolean equals(Object obj)
元视图的操作方法:
Set keySet()
Collection values()
Set entrySet()
LinkedHashMap:使用链表维护添加进的元素,遍历后的顺序和插入顺序一致
TreeMap:按照添加进Map中的元素的key的指定属性进行排序,key必须是同一类型的对象
Hashtable:古老的Map实现类,线程安全的,不允许使用null作为key和value
Properties:Hashtable的子类,通常用来处理属性文件
存取时建议使用setProperty(String key,String value)和getProperty(String key)
Collections 操作集合的工具类
排序操作(都是静态方法):
reverse(List)
shuffle(List)
sort(List)
sort(List,Comparator)
swap(List,int i,int j)
查找、替换:
Object max(Collection)
Object max(Collection,Comparator)
Object min(Collection)
Object min(Collection,Comparator)
int frequency(Collection,Object)
void copy(List dest,List src)
boolean repalaceAll(List,Objcet oldVal,Object newVal)