泛型:jdk5添加的特性
* 类型参数化<T>中的T只是一个占位符,在创建对象时传递的是哪个类*名就是哪个类型
* 一种编译时检测机制,实际类型并没有增加,定义类时使用<大写字符>表示*泛型
* 泛型边界限制往往用在定义变量和参数时使用,目的是对赋的值一个类型*约束。
*使用泛型时没有类型上转情况
*?是泛型通配符,表示任意类型,有时候在使用通配符时会做边界限*制,extends是上边界限制
*super做下边界限制
*class Change<T>
{
public void swap(T a , T b)
{
T temp = a ;
a = b;
b = temp;
}
//方法泛型,此处的T和上面的T没有任何关系
public <T> void test(T a)
{
}
}
*
*
*数组好处:通过下标可以快速查找定位元素
* 数组弊端:元素类型必须一致,元素个数必须确定
* 集合:用来存储一组元素的结构,元素个数和类型都不做限制
*
Collection Map(k-v映射关系)
* List:有序(元素存入顺序)可重复 Set:不允许重复
* ArrayList LinkedList HashSet:无序不重复 TreeSet:有序不重复
*
*
* ArrayList是通过维护数组来实现
* 改、查操作使用ArrayList速度快捷
* 对于删、增速度慢
* LinkedList是用双向链表实现
* 改、查不擅长
* 删、增擅长
*list.add(0, p3);//在指定位置处添加元素,后面的元素向后顺移
*list.remove(0);//后面的元素会向前顺移
*list2.addAll(list);//将list中每个元素依次取出存入list2中
*list2.add(list);//将list转换成object对象整体存入list2中
*//迭代器遍历
Iterator<类型> it = list2.iterator();//获取集合迭代器对象
while(it.hasNext())
{
类型 p = it.next();
}
* 类型参数化<T>中的T只是一个占位符,在创建对象时传递的是哪个类*名就是哪个类型
* 一种编译时检测机制,实际类型并没有增加,定义类时使用<大写字符>表示*泛型
* 泛型边界限制往往用在定义变量和参数时使用,目的是对赋的值一个类型*约束。
*使用泛型时没有类型上转情况
*?是泛型通配符,表示任意类型,有时候在使用通配符时会做边界限*制,extends是上边界限制
*super做下边界限制
*class Change<T>
{
public void swap(T a , T b)
{
T temp = a ;
a = b;
b = temp;
}
//方法泛型,此处的T和上面的T没有任何关系
public <T> void test(T a)
{
}
}
*
*
*数组好处:通过下标可以快速查找定位元素
* 数组弊端:元素类型必须一致,元素个数必须确定
* 集合:用来存储一组元素的结构,元素个数和类型都不做限制
*
Collection Map(k-v映射关系)
* List:有序(元素存入顺序)可重复 Set:不允许重复
* ArrayList LinkedList HashSet:无序不重复 TreeSet:有序不重复
*
*
* ArrayList是通过维护数组来实现
* 改、查操作使用ArrayList速度快捷
* 对于删、增速度慢
* LinkedList是用双向链表实现
* 改、查不擅长
* 删、增擅长
*list.add(0, p3);//在指定位置处添加元素,后面的元素向后顺移
*list.remove(0);//后面的元素会向前顺移
*list2.addAll(list);//将list中每个元素依次取出存入list2中
*list2.add(list);//将list转换成object对象整体存入list2中
*//迭代器遍历
Iterator<类型> it = list2.iterator();//获取集合迭代器对象
while(it.hasNext())
{
类型 p = it.next();
}