Java数据结构(2)- List

1、集合的由来

程序的运行过程种,由于数据的长度并不会确定,所以使用数组的方式太过于麻烦,由此有产生了集合框架(说白了就是学习类,调用方法)

2、数组和集合的区别

Java数据结构(2)- List_第1张图片

3、集合体系

list接口下的集合都是有序的,可以重复的。而Map下的集合是无序的,不能重复的

4、线程不安全

什么叫做线程不安全,简单点说就是,当我在对一个对象数据进行操作的时候,不同的线程都会执行到这一步,那么就会导致两个线程为了抢一个数据打起来,就会导致报错或者异常。(具体的线程问题,看下回线程分析)

5、ArrayList集合框架

Java数据结构(2)- List_第2张图片
如何实现请看下面代码…

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的方法,用来获得一个迭代器的对象。
Java数据结构(2)- List_第3张图片
代码实现

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);
   	}
   }

}


你可能感兴趣的:(Java,Java基础)