1、集合的由来
程序的运行过程种,由于数据的长度并不会确定,所以使用数组的方式太过于麻烦,由此有产生了集合框架(说白了就是学习类,调用方法)
2、数组和集合的区别
3、集合体系
4、线程不安全
什么叫做线程不安全,简单点说就是,当我在对一个对象数据进行操作的时候,不同的线程都会执行到这一步,那么就会导致两个线程为了抢一个数据打起来,就会导致报错或者异常。(具体的线程问题,看下回线程分析)
5、ArrayList集合框架
如何实现请看下面代码…
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class MyArrayList {
public static void main(String[] args) {
//创建一个list对象
ArrayList list = new ArrayList();
//往里面添加元素
list.add("123");
list.add("456");
list.add("789");
list.add(123);
}
}
6、LinkedList集合框架
LinkedList与ArrayList集合框架其实现原理都是一样的,但是LinkedList的底层原理是用链表实现的而ArrayList的底层实现,是通过动态数组(自定义容器类)实现的。而底层实现的不同,其存储数据的效率也不同。
ArrayList : 查、改比较方法,直接通过索引就可以直接更改,但是增加和删除就不行了,每次删除和增加因为长度是固定的,一旦满了就需要扩容。
LinkedList:添加和删除方便,直接在尾部添加新的数据,删除直接将地址更改就行了。但是查询效率就很满了,因为需要遍历整个链表。
所以如何实现,直接查看API文档,然后根据上面的代码直接照着用就行,无非就创建对象,调用方法。
7、迭代器
迭代器,说白了就是用了遍历集合元素的,每个集合框架都会实现iterable接口,并且该接口下面定义了一个iterator的方法,用来获得一个迭代器的对象。
代码实现
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class MyArrayList {
public static void main(String[] args) {
//Method1(list);
//Method2(list);
}
private static void Method2(ArrayList list) {
//使用迭代器来进行遍历集合,需要获得其对象
//ArrayList实现了iterable接口,里面有个方法,就是iterator来获得一个iterator类型的对象
Iterator it = list.iterator();
//刚开始迭代器的指针是不会指向集合中的元素的,只有通过调用了next的方法
//指针才会去获得list中的第一个元素的地址
System.out.println(it.next());
//hasNext方法的目的就是去判断下一个元素是否为null,如果为null就返回一个false
while(it.hasNext()){
//为什么会只打印两个元素,因为指针携带的地址,是第二个元素的地址,每次循环
//并不会初始化指针中的地址
System.out.println(it.next());
}
System.out.println(it.hasNext());
}
private static void Method1(ArrayList list) {
//使用for循环来获取集合的元素
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("-------------------------------");
//使用foreach来遍历集合,只有实现了iterable才能成为foreach的目标
for (Object object : list) {
System.out.println(object);
}
}
}