Collection、泛型

Day02 Collection、泛型 总结

第一章 Collection集合

1.1集合概述

1).“集合:就是一个容器,可以装很多的引用

2).它跟数组的区别:

1).数组:长度固定的;数组中存储的是同一类型的元素,可以存储基本数据类型值。

2).集合:长度不固定;集合存储的都是对象。而且对象的类型可以不一致。

1.2 集合框架

集合按照其存储结构可以分为两大类,分别是单列集合 java.util.Collection 和双列集合 java.util.Map。

List 的特点是元素有序、元素可重复。 Set 的特点是元素无序,而且不可重复。

 

1.3 Collection常用功能

1).添加:

1).public boolean add(E e) : 把给定的对象添加到当前集合中 。

   注意:对于ArrayList永远返回:true;

对于Set集合,当存储重复元素时,会返回false。

2).删除:

1).public void clear() :清空集合中所有的元素。

2).public boolean remove(E e) : 把给定的对象在当前集合中删除。

   注:如果有多个相同元素,只移除一个(第一个)。

3).判断:

1).public boolean contains(E e) : 判断当前集合中是否包含给定的对象。

2).public boolean isEmpty() : 判断当前集合是否为空。

4).获取:

1).public int size() : 返回集合中元素的个数。

2).public Object[] toArray() : 把集合中的元素,存储到数组中

5).遍历:

1).public Iterator iterator():获取一个迭代器;

 

第二章 Interator迭代器

2.1 Interator接口

1)Iterator 主要用于迭代访问(即遍历) Collection 中的元素,因此 Iterator 对象也被称为迭代器

2)获取迭代器的方法:

public Iterator iterator() : 获取集合对应的迭代器,用来遍历集合中的元素的。

3)格式:

public boolean hasNext() :如果仍有元素可以迭代,则返回 true。

public E next() :返回迭代的下一个元素。

 

迭代:即Collection集合元素的通用获取方式。在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来。

2.2增强for

1)格式:

for(元素的数据类型 变量 : Collection集合or数组){

//写操作代码

}

注意:新for循环必须有被遍历的目标。目标只能是Collection或者是数组。新式for仅仅作为遍历操作出现。

 

第三章 泛型

3.1 泛型的概述及好处

1)泛型:可以在方法中预支地使用未知的类型。

 注意:一般在创建对象时,将未知的类型确定具体的类型。当没有指定泛型时,默认类型为Object类型。

2)好处:让编译器为我们的代码监督,只能向集合中添加指定类型的数据, 如果添加了其它类型数据,编译器立即编译错误。

 注意:泛型是数据类型的一部分,我们将类名与泛型合并一起看做数据类型。

3.2 定义和使用含有泛型的

1).格式:

class Student<E>{

public void add(E e){

}

public E get(){

return null;

}

   }

2).泛型定义说明:

1).<E>中的E:可以是大写、也可以是小写;可以是一个字符,也可以是多个字符;

2).类中的方法可以使用这个类型名;

3)使用泛型: 在创建对象的时候确定泛型

例如, Student<String> list = new Student<String>();

3.3 含有泛型的方法

1)格式:修饰符 <代表泛型的变量> 返回值类型 方法名(参数){ }

2)使用泛型:  调用方法时,确定泛型的类型

//定义一个方法,可以接收5个相同类型的值
public <T> void sum(T t1,T t2,T t3,T t4,T t5){
    System.out.println("t1 = " + t1);
    System.out.println("t2 = " + t2);
    System.out.println("t3 = " + t3);
    System.out.println("t4 = " + t4);
    System.out.println("t5 = " + t5);
}

public static void main(String[] args) {
    Student stu = new Student();
    stu.<Integer>sum(10,20,30,40,50);
    stu.<String>sum("a", "b", "c", "d", "e");

}

3.4 含有泛型的接口

1)格式:修饰符 interface接口名<代表泛型的变量> { }

泛型类

public interface IA<E>{

public void add(E e);

}

3)使用格式:

1、定义类时确定泛型的类型

2、始终不确定泛型的类型,直到创建对象时,确定泛型的类型

3.5 泛型通配符

1).需求:定义一个方法,方法的形参:可以接收具有任何泛型的集合

        <?> : 表示可以接收具有任何泛型的集合;

class Demo{

public static void main(String[] args){

ArrayList<String> list1 = new ArrayList<>();

ArrayList<Integer> list2 = new ArrayList<>();

ArrayList<Student> list3 = new ArrayList<>();

p1(list1);//OK

p1(list2);//OK

p1(list3);//OK

p1("呵呵");//错误

}

public static void p1(ArrayList<?> list){
}

}

2).需求class Person{}

   class Student extends Person{}

   class JavaStudent extends Student{}

 

请定义方法参数可以接收具有Student或者JavaStudent泛型的集合上限

class Demo{

public static void main(String[] args){

ArrayList<Person> list1 = new ArrayList<>();

ArrayList<Student> list2 = new ArrayList<>();

ArrayList<JavaStudent> list3 = new ArrayList<>();

p1(list1);//错误

p1(list2);//OK

p1(list3);//OK

}

public static void p1(ArrayList<? extends Student> list){

}}

3).需求定义方法参数可以接收具有Person或者Student泛型的集合下限

class Demo{

public static void main(String[] args){

ArrayList<Person> list1 = new ArrayList<>();

ArrayList<Student> list2 = new ArrayList<>();

ArrayList<JavaStudent> list3 = new ArrayList<>();

p1(list1);//OK

p1(list2);//OK

p1(list3);//错误

}

public static void p1(ArrayList<? super Student> list){

}
    }

 

 

 

posted on 2018-10-11 13:35  水漾月  阅读(217)  评论(0编辑  收藏  举报

导航