Collection集合的常用知识点总结01
Collection接口中,定义的是所有单列集合*性的方法,所有的单列集合都可以使用的共性方法(不带索引的方法)
Collection有两个常用子接口List和Set接口,而list接口中有三个常用的集合,分别是ArrayList集合,LinkedList集合,Vector集合(了解)。而Set接口中有三个常用的集合Hashset,LinkedHashSet集合,TreeSet集合(了解)。
先说Collection接口,其重写了toString方法,因此可以直接输出集合名称([元素内容])
有七个常用的方法:
1.public boolean add(E e)把给定元素添加到当前集合当中
2.public boolean remove(E e)把给定元素从集合中删除
3.public boolean contains(E e)判断当前集合中是否包含给定的元素
4.public boolean isEmpty()判断当前集合是否为空
5.public int size()返回集合中元素的个数
6.public Object[] toArray()把集合中的元素存储到数组中
7.public void clear()清空集合中所有的元素
之前我们都学过遍历集合有for循环和for增强的方法(for增强就是一种迭代器),我们这里在将下面内容之前补充一下迭代器的相关知识
在集合中,我们还可以通过迭代器来遍历集合中的元素
Iterator接口就是我们所说的迭代器
其接口中有两个常用的方法
- boolean hasNext()判断是否仍有元素可以迭代
- E next()返回迭代出来的元素
因为Iterator为一个接口,我们无法直接使用,必须通过它的实现类,而集合中有一个叫interator的方法可以直接创建迭代器的实现类。因此我们的步骤就是:
1.先通过Collection集合中的方法创建Iterator的实现类
2.然后调用实现类中的hasNext()和next()方法配合while循环或者for循环(少用),来遍历我们的集合
那么迭代器的实现原理是什么勒?
在获取到我们的迭代器实现类后,会把索引(指针)指向集合的-1索引。hasNext()判断下一个索引处还有没有元素。
next()会做两件事:1.取出下一个元素。2.每取一个元素就会把指针往后移动一位。
然后,我们还补充一下泛型的知识。泛型就是一种未知的数据类型,当我们不知道用什么数据类型的时候,就可以采用泛型。例如我们最开始创建ArrayList集合的时候,是不是会出现一个,这就是我们的泛型。
泛型一般有以下四个方面的应用
1.定义含有泛型的类
public class Demo01<E> {
private E message;
public E getMessage() {
return message;
}
public void setMessage(E message) {
this.message = message;
}
}
这样在测试类创建该类的对象的时候,给定该类一个数据类型,然后就可以在message里面放入指定的数据类型
2.定义含有泛型的方法
public class Demo01 {
public <M> void method(M message){
System.out.println(message);
}
}
这样你在调用这个方法的时候,传入什么数据类型,message里面就会放入什么数据类型
3.定义含有泛型的接口
public interface Interface01<E>{
E method(E e);
}
3.1在接口的实现类中把接口的泛型定下来
public class Interface01Impl implements Interface01<String>{
public void method(String s){
System.ou.println(s);
}
}
3.2在测试类中把实现类的泛型定下来,实现类同样采取泛型的表现形式
public class Interface01Impl<E> implements Interface01<E>{
public void method(E s){
System.ou.println(s);
}
}
//测试类
public class Demo01{
Interface01Impl<Integer> iImpl=new Interface01Impl<>();
iImpl.method(10);//10
}
4.泛型通配符<?>
泛型通配符代表任意的数据类型
只能作为方法的参数引用,不能创建对象时使用(比如创建一个ArrayList时,不能把它的参数类型写成泛型通配符)
public class Demo01 {
public static void main(String[] args) {
ArrayList<Integer> aList01=new ArrayList<>();
aList01.add(1);
printArray(aList01);//[1]
ArrayList<Double> aList02=new ArrayList<>();
aList02.add(1.5);
printArray(aList02);//[1.5]
}
public static void printArray(ArrayList<?> list){
System.out.println(list);
}
}