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接口就是我们所说的迭代器
其接口中有两个常用的方法

  1. boolean hasNext()判断是否仍有元素可以迭代
  2. 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);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值