1.1 List
1. 接口和方法阐述
(1)接口

(2)方法

举例

代码示例
package com.baidu.www;
import java.util.ArrayList;
import java.util.List;
/**
* 单列集合:
* 特点:
* 有序(元素的存取顺序一致),可重复
* 注意:
* List是接口,所以可以通过创建其子类ArrayList对象来完成该接口的实例化
* List list = bew ArrayList();
*
* List接口中的成员方法:
* public boolean add(E e); // 将数据添加到集合的末尾,这里的E是泛型的意思,目前可以理解为Object类型
* public E get(int index); // 根据索引,获取对应的元素
* public int size(); // 获取集合的长度
*
* 使用集合的步骤:
* 1. 创建集合对象
* 2. 创建元素对象
* 3. 将元素对象添加到集合对象中
* 4. 遍历集合
*/
public class Test {
public static void main(String[] args) {
// 需求:往List集合中添加三个学生对象
// * 1. 创建集合对象
List list = new ArrayList();
// * 2. 创建元素对象
Student s1 = new Student("刷刷", 12);
Student s2 = new Student("刷刷", 34);
Student s3 = new Student("分发", 21);
Student s4 = new Student("版本", 56);
// * 3. 将元素对象添加到集合对象中
list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);
// 直接打印集合
System.out.println(list);
// 获取索引为2的元素
Object obj = list.get(2);
System.out.println("索引为2的元素是:" + obj);
// 获取集合中的元素个数
System.out.println("集合的长度是:" + list.size());
// * 4. 遍历集合
System.out.println("===========================");
for (int i = 0; i < list.size(); i++) {
// i表示的是集合中每个元素的索引
System.out.println("索引为"+i+"的元素是:"+list.get(i));
}
}
}
2. ArrayList 底层结构和源码分析
(1)底层结构

代码示例
package com.baidu.www;
import java.util.ArrayList;
public class ArrayList_ {
public static void main(String[] args) {
/**
* public boolean add(E e) {
* ensureCapacityInternal(size + 1); // Increments modCount!!
* elementData[size++] = e;
* return true;
* }
*
* 线程不安全!
*/
ArrayList arrayList = new ArrayList();
arrayList.add(null);
arrayList.add(null);
System.out.println(arrayList);
}
}
(2)源码分析
transient,表示瞬间,短暂的,表示该属性不会被序列化

无参构造源码

有参构造源码

代码示例
package com.baidu.www;
import java.util.ArrayList;
public class ArrayList_ {
public static void main(String[] args) {
// ArrayList arrayList = new ArrayList();
//
// for (int i = 0; i < 10; i++) {
// arrayList.add(i);
// }
//
// for (int i = 0; i < 15; i++) {
// arrayList.add(i);
// }
ArrayList arrayList1 = new ArrayList(8);
for (int i = 0; i < 10; i++) {
arrayList1.add(i);
}
for (int i = 0; i < 15; i++) {
arrayList1.add(i);
}
}
}
3. Vector 底层结构和源码分析
(1)底层结构

(2)源码分析


示例代码
package com.baidu.www;
import java.util.Vector;
public class Vector_ {
public static void main(String[] args) {
// 无参构造
Vector vec = new Vector();
for (int i = 0; i < 10; i++) {
vec.add(i);
}
for (int i = 0; i < 15; i++) {
vec.add(i);
}
}
}
4. LinkedList 底层结构和源码分析
(1)底层结构


(2)源码分析
Add 源码分析

Remove 源码分析

代码示例
package com.baidu.www;
import java.util.LinkedList;
public class LinkedList_ {
public static void main(String[] args) {
LinkedList linkedList = new LinkedList();
linkedList.add(1);
linkedList.add(1);
linkedList.add(2);
linkedList.add(2);
// 默认删除第一个节
linkedList.remove();
linkedList.remove();
linkedList.set(1, 99);
linkedList.get(1);
System.out.println(linkedList);
}
}
ArrayList 和 LinkedList 的比较


浙公网安备 33010602011771号