Collection
collection 集合 ;
collection 是所有集合的父类,object是引用类型的 父类
什么是集合;集合相当于一个容器 , 它可以装许多引用。
数组;它的长度是有限的,不可以进行改变。 集合;长度是可以进行改变。
在Java中有许多,像这样集合的类,每个集合类,对元素的存储都采用了不同的数据结构。
有些数据结构会导致,增删快,查询慢 ,有些数据结构会导致查询快 ,增删慢
数据结构;
数组;Arrraylist
列表;Linkedlist
哈希表;hashtable
栈(stack);
队列;
红黑树;
……
集合体系
collection集合常用的方法,
1 add增加
2,clear清空当前所有集合
3. remove通过 删除当前某个元素
4 contians判断集合是否存在集合当中。
5 size 判断当前集合的长度
6 object[] toArray 将字符串转换成 数组
7 isempty 查看当前集合是否为空
Iterator迭代器
iterator;是集合Java中的一员,collection 与map 都是 进行存储元素的,而iterator 是用于迭代的即所谓的遍历 , 主要用于collection 集合迭代的,
public Iterator ierator ()这种方法 进行collection 进行 迭代的。
迭代;即collection 集合进行遍历的,在遍历之前先要判断集合中有没有元素 ,如果有就行下一个元素进行遍历, 直到判断出整个集合没有元素为止。也就完成整个集合的遍历。
在 iterator接口中有两个方法
1 public e next 返回迭代的下一个元素
2 pbulic boolean hasnext () 遍历元素 如果有就返回true ;
这里是iterator迭代器 的原理,先调取集合,进行遍历,用hasnext进行判断,再用next进行下一个,
增强for
增强for也称之为for each 循环 是在jdk 1.5之后 出现的,他的底层是利用iterator迭代器的
泛型
泛型概念;也是在jdk1.5之后定义出泛型语法的。 就是在类和数组中 可以用“E”或者其他字母来代替引用类型。
泛型的好处;让编译器替我们进行监督,我们只能添加这个类型的对象,如果添加别的元素会进行报错。
自定义泛型类;
含有泛型的方法;
还有泛型接口在这里就不写了。想要看的话 可以@ 也可以在下面评论
泛型通配符
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){
}
}