List集合
List 是一个接口,是有序的 collection,此接口的用户可以对列表中每个元素的插入位置进行精确的控制,用户可以根据元素的整数索引访问元素,并搜索列表中的元素。List 接口允许存放重复的元素,并且元素都是有序的(Set 接口不允许存放重复元素,元素是无序的)
List 接口特点
- 它是一个有序的集合
- 他是一个带索引的集合,通过索引就可以精确地操作集合中的元素(与数组的索引是一个道理)
- 集合中可以有重复的元素,可以通过 equals 方法来比较是否为重复的元素
- List 接口常用的子类有:ArrayList 集合、LinkedList 集合
List 接口中常用的方法
- boolean add(Object e):向集合末尾添加指定元素
- void add(int index,Object e):向集合指定索引处添加指定元素,原有元素依次后移
- remove(Object e):将指定元素对象从集合中删除,返回被删除的元素
- remove(int index):将指定索引处的元素从集合中删除,返回被删除的元素
- set(int index,Object e):将指定索引处的元素替换成指定的元素,返回替换前的元素
- get(int index):获取指定索引处的元素,返回该元素
- ListIterator listIterator():List 集合特有的迭代器(开发大多不用这个,直接使用 Iterator 迭代器)
List 的子类特点
ArrayList:
底层数据结构是数组。查询快,增删慢。
线程不安全,效率高。
Vector:
底层数据结构是数组。查询快,增删慢。
线程安全,效率低。
LinkedList:
底层数据结构是链表。查询慢,增删快。
线程不安全,效率高。
到底使用谁?
分析:
要安全吗?
要:Vector(即使要也不使用这个,后面会再说)
不要:ArrayList 或者 LinkedList
查询多:ArrayList
增删多:LinkedList
什么都不知道就选 ArrayList。
ArrayList集合
ArrayList集合是程序中最常见的一种集合,属于引用类型,在AyyayList内部封装了一个长度可变的数组,当存储元素超过数组长度时,ArrayList会在内存中分配一个更大的数组来存储这些元素,可以看做ArrayList是一个长度可变的数组。
创建集合
-
导包:import java.util.ArrayList;
-
创建对象:
ArrayList<要存储的数据类型> 变量名 = new ArrayList<要存储的数据类型>();
*注意:<要存储的数据类型>中必须为引用数据类型*
基本数据类型对应应用数据类型:
基本数据类型 对应的引用数据类型 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean
创建方式 :
存储String类型的元素:
ArrayList<String> list = new ArrayList<String>();
存储int类型的元素:
ArrayList<Integer> list = new ArrayList<Integer>();
创建自己定义的Student类型的数据:
ArrayList<Student> list = new ArrayList<Student>();
实例:
package demo05;
//ArrayList集合
import java.util.ArrayList;
public class demo4 {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1); // xxxx.add; 添加元素
list.add(2);
list.add(3);
list.add(4);
System.out.println(list); // 打印整个数组
System.out.println(list.get(0)); // xxxx.get(i); 获取下标为i的元素
System.out.println(list.get(1));
System.out.println(list.get(2));
System.out.println(list.get(3));
System.out.println(list.size()); // xxxx.size(); 获取数组长度
}
}
Vector
Vector 集合数据存储结构是数组结构,与 ArrayList 不同之处在于提供了一个独特的取出方法:枚举Enumeration,与 Iterator 接口功能类似。Vector 集合已被 ArrayList 集合替代,枚举Enumeration 已被迭代器 Iterator 替代。
现在很少用 Vector 集合,多用 ArrayList 集合。