javase-collection-210620-01
- List
- ArrayList
ListTest01.java
package bgy_list_01;
import java.util.*;
/*
1. List
特点: 有序可重复
1)有序:List集合中的元素有下标 从0开始,以1递增
2)可重复:存一个‘bgy’,还能再存一个‘bgy’
2. List是Collection的子接口
List接口特有常用方法:
void add(int index, E element)
Object get(int index)
int indexOf(Object o)
int lastIndexOf(Object o)
Object remove(int index)
Object set(int index , Object element)
*/
public class ListTest01 {
public static void main(String[] args) {
// List集合可以创建的类型
// List myList01 = new LinkedList();
// List myList02 = new Vector();
List myList = new ArrayList();
myList.add("a");
myList.add("b");
myList.add("c");
myList.add("d");
/*
这个方法对于ArrayList来说,效率比较低
第一个参数为下标,第二个参数为插入元素
*/
myList.add(0,"bgy");
Iterator it = myList.iterator();
while (it.hasNext()) {
Object o = it.next();
System.out.println(o);
}
System.out.println("========================================================");
/*
根据下标获取元素
*/
Object firstObject = myList.get(0);
System.out.println(firstObject);
System.out.println("========================================================");
/*
因为有下标,所以List集合会有自己的特殊的遍历方式
通过下标遍历,,,List集合特有,Set就没有了
*/
for (int i = 0; i < myList.size(); i++) {
Object obj = myList.get(i);
System.out.println(obj);
}
System.out.println("========================================================");
/*
获取指定对象第一次出现处的索引
*/
System.out.println(myList.indexOf("b"));
/*
获取指定对象最后一次出现处的索引
*/
System.out.println(myList.lastIndexOf("c"));
System.out.println("========================================================");
/*
修改指定位置元素
*/
myList.set(2,"xiugai");
for (int i = 0; i < myList.size(); i++) {
Object obj = myList.get(i);
System.out.println(obj);
}
System.out.println("========================================================");
}
}
ArrayListTest01.java
package bgy_ArrayList_01;
import java.util.ArrayList;
import java.util.List;
/*
ArrayList集合:
1. 默认初始值为10
底层先创建了一个长度为0的数组,当添加第一个元素时,初始化容量为10
2. 集合底层是一个Object[]数组
3. 构造方法:
new ArrayList();
new ArrayList(20);
4. ArrayList集合的扩容:
原容量的1.5倍
ArrayList底层是数组,如何优化???
尽可能少的扩容。因为数组扩容效率较低,
在使用ArrayList集合的时候估计元素个数,给定一个初始化容量。
5. 数组优点:
检索效率较高
(
每个元素占用的空间大小一样,内存地址是连续的,知道首元素的内存地址,
知道下标,通过数学表达式计算出元素的内存地址,所以检索效率最高。
)
6. 数组缺点:
随机增删元素效率比较低
数组无法存储大数据量(很难找到一个连续的,巨大的一片内存空间)
7. 向数组末尾添加元素很高,不受影响
8. 面试题:
这么多集合中,用的那个集合最多
ArrayList,
因为往数组末尾添加元素,效率不受影响
另外,我们 检索 / 查找 某个元素的操作比较多
9. ArrayList集合不是线程安全的集合。。。
*/
public class ArrayListTest01 {
public static void main(String[] args) {
// 默认初始容量为10
List list01 = new ArrayList();
// size()是获取当前集合中的元素个数,不是获取集合的容量
System.out.println(list01.size()); // 0
// 指定集合初始化容量为20
List list02 = new ArrayList(20);
System.out.println(list02.size()); // 0
}
}
ArrayListTest02.java
package bgy_ArrayList_01;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
/*
ArrayList 的构造方法
*/
public class ArrayListTest02 {
public static void main(String[] args) {
List list01 = new ArrayList();
List list02 = new ArrayList(22);
Collection c = new HashSet();
c.add(1);
c.add(2);
c.add(3);
c.add(4);
/*
通过这个构造方法一个将HashSet集合转化为List集合
*/
List list03 = new ArrayList(c);
for (int i = 0; i < list03.size(); i++) {
Object o = list03.get(i);
System.out.println(o);
}
}
}
本文详细介绍了Java中的List接口及其实现类ArrayList,包括List的特点、常用方法,如add、get、indexOf等,并展示了ArrayList的初始化、扩容机制、遍历方式以及元素修改操作。还提及ArrayList在数组基础上的优势和不足,以及在实际开发中的应用场景。
202

被折叠的 条评论
为什么被折叠?



