------- android培训、java培训、期待与您交流!---------
一、概述
集合只用储存对象,集合的长度是可变的,集合可以储存不同类型的对象。
二、迭代器Iterator
用内部类的方法,集合元素取出方式
hasNext() next() remove()
获取用iterator()
for(Iterator it=al.iterator();it.hasNext();){ //用for方式可以运行完后自动释放it
it.next()
三、List、Set、Map
List元素有序的,元素可以重复
List共有方法
add(index,element)
addAll(index,Collection)
remove(index)
get(index)
ListIterator<E> listIterator()
E set(int index, E element)
int size()
List<E> subList(int fromIndex,int toIndex)
indexOf(object)
lastIndexOf(object)
对List进行添加、修改不可以用Iterator
要用ListIterator
listIterator的特有方法
hasPrevious()
nextIndex()
E previous()
int previousIndex()
set(E e)
ArrayList初始容量是10的数组,Vector增加了多线程支持
Enumeration hasMoreElements() nextElement()
LinkedList基于链表
Set元素是无序,存进和取出顺序不一定一致,元素不可以重复.
HashSet底层是哈希表,访问原理先判断HashCode,在equals.非线程同步.
TreeSet底层基于二叉树
可以对Set集合中的元素进行排序.
放入的自定义对象要实现Comparable接口或初始化TreeSet时传入Comparator对象
返回负数obj更靠前、返回零obj不会被添加到TreeSet
public int compareTo(Object obj){
if(!(obj instanceof Xxx)){
throw new RuntimeException("不是Xxx的实例");
ts=new TreeSet(new Comparator(){
public int compare(Object o1,Object o2){
return 1; //o1将会排在前面
});
范型定义在类
class MyString<T>{
public void show(T t){
syo.println(""+t);
public static <Q> void show(Q t){ //静态方法不可以用类的范型,但可以定义在方法
范型的限定
<? extends E>上限
<? 下限 E>上限
Map常用方法
put(K key,V value)
putAll(Map<? extends K,? extends V> m)
clear() //清空
remove(Object key)
entrySet() //返回映射关系的Set视图
keySet() //返回映射中包含的键的Set视图,就是把所有返回一个包含所有key的set
containsValue(Object value)
containsKey(Object key)
isEmpty()
get(Object key)
size()
values() //返回映射中包含值的Collection视图
HashTable底层是哈希表,不可存入null键、null值,线程同步。
HashMap底层是哈希表,可存入null键、null值,线程不 同步。
TreeMap底层是二叉树,线程不同步,可以用于对Key进行同步。
Set底层使用了Map集合。
Set<Map.Entry<String,String>> entrySet=map.entrySet(); //取出映射关系
for(Iterator<Map.Entry<String,String>> it=entrySet.iterator();it.hasNext();){
Map.Entry<String,String> me=it.next();
me.getKey();
setValue();
Collections集合工具类都是静态方法
synchronizedList(List<E> list)
Arrays.asList(arr)