//1.1 Collection接口
//Collection: 集合的根接口
//包含了两个子接口: 1. List 2.Set
//Collection的常用方法:
public class Test1 {
public static void main(String[] args) {
Collection co = new ArrayList();
co.add(1); //添加元素 Integer-自动装箱
co.add(3); //集合只能存对象?
co.add(2.5); //Double
System.out.println(co.contains(1)); //true
System.out.println(co.remove(1)); //删除单个对象
System.out.println(co.size()); //求长度
Collection co2 = new ArrayList();
co2.add(5);
co2.add(7);
System.out.println(co.addAll(co2)); //添加一个集合
System.out.println(co);
Object[] as = co.toArray(); //转数组
System.out.println(Arrays.toString(as));
}
}
//1.2. List接口
//List接口,是Collection的子接口
//包含了两个重要的实现类: ArrayList,linkedList其中还有一个不太常用实现类Vector
//List的特点:存储的元素有序(有序!=排序),可重复
public class Test1 {
public static void main(String[] args) {
List list = new ArrayList();
list.add(1);
list.add(3);
list.add(2);
list.add(3);
list.add(2, 6);
System.out.println(list); //1,3,6,2,3
System.out.println(list.get(2)); //根据下标获取元素
//循环遍历
for(int i=0;i list = new ArrayList<>();
list.add(new Person("凤姐"));
list.add(new Person("芙蓉"));
list.add(new Person("刘亦菲"));
//list.add("高圆圆"); //从源头上规避了其他类型的值的存储
//循环遍历,获取对象的属性
Iterator it = list.iterator();
while(it.hasNext()) {
//ClassCastException: String cannot be cast to Person
Person person = it.next(); //有了泛型约束,无需强转
System.out.println(person.name);
}
}
}
//2.2 泛型定义
//概述: 参数化类型,把类型作为参数传递,约束了所存储值的类型
//常见的泛型分类:
//泛型类(常用) 泛型接口(常用) 泛型方法
//语法:
//泛型类: MyFan : 约束泛型类中所有使用泛型参数的方法所传的类型
class MyFan {
public void add(T t) {
System.out.println(t);
}
}
//泛型接口:FanInter:约束泛型中接口传递类型,泛型接口实现类也需要定义泛型
interface FanInter{
void test(T t);
}
//实现类实现泛型接口
class MyImpl implements FanInter{
@Override
public void test(T t) {
}
//泛型方法,泛型的约束只能用在该方法中(不常用)
public void show(E e) {
System.out.println("泛型方法:"+e);
}
}
public class Test2 {
public static void main(String[] args) {
MyFan fan = new MyFan();
fan.add(6);
}
}
//2.3 自定义泛型集合
//自定义泛型集合: 泛型接口与实现类组合使用
//泛型好处: 规范化所使用的类型 获取本身类型是无需强转,提高安全性
interface MyList{ //泛型接口
public void add(E e);
}
class MyArrayList implements MyList{
@Override
public void add(E e) {
System.out.println("集合存储:"+e);
}
}
public class Test3 {
public static void main(String[] args) {
MyList list = new MyArrayList<>();
list.add(666);
}
}