ArrayList
ArrayList实现了长度可变的数组,在内存中分配连续的空间。
遍历元素和随机访问元素的效率比较高
常用方法
/*
List接口实现类
ArrayList
可以保存重复元素,底层是数组实现,添加元素的类型可以是任意类型的.
虽然集合中默认是可以添加任意数据类型,但是后续处理时,会出现类型转换问题.
所以java中的集合类都支持自定义类型(泛型 把类型当做参数传递)
ArrayList<String> arrayList1 = new ArrayList<>();
arrayList1.add("a");
arrayList1.add("b");
arrayList1.add("c");
arrayList1.add("d");
arrayList1.add("e");
arrayList1.add("f");
arrayList1.add("g");
arrayList1.add("a");
arrayList1.add("b");
arrayList1.add("a");
arrayList1.add("a");//向末尾添加元素,会自动扩容
//arrayList1.add(11, "x");//向指定的位置添加元素, 位置从0开始 到size(实际装入的元素个数)
//arrayList1.remove("b");//根据元素的内容删除数据,只删除匹配的第一个元素
//String s = arrayList1.remove(0);//删除并返回指定位置上的元素
//System.out.println(s);
//arrayList1.clear(); 清空集合
//System.out.println(arrayList1.contains("x"));//是否包含指定的元素
//System.out.println(arrayList1.get(3));获得指定位置上的元素(底层是数组,获取元素的速度是最快的)
//System.out.println(arrayList1.indexOf("b"));
//System.out.println(arrayList1.lastIndexOf("b"));
//System.out.println(arrayList1.isEmpty()); 判断集合中的元素是否为空 为空--true 否则--false
// arrayList1.set(1,"A");//替换指定位置的元素
//System.out.println(arrayList1.size());//获得集合中实际元素的个数, 也可以说是集合的长度
遍历方式
LinkedList<String> arrayList1 = new LinkedList<>();
arrayList1.add("a");
arrayList1.add("b");
arrayList1.add("c");
arrayList1.add("d");
arrayList1.add("e");
arrayList1.add("f");
//1. for循环
/*for (int i = 0; i <arrayList1.size() ; i++) {
System.out.println(arrayList1.get(i));
}*/
//2.增强for循环
/* for(String s : arrayList1){
System.out.println(s);
}*/
//3.使用迭代器进行遍历
Iterator<String> iterator = arrayList1.iterator();
while (iterator.hasNext()){
String s = iterator.next();
System.out.println(s);
}
LinkedList
LinkedList采用链表存储方式。插入、删除元素时效率比较高
常用方法
List接口实现类
LinkedList
底层是链表实现,每一个数据封装在一个Node对象中.
*/
LinkedList<String> linkedList = new LinkedList<>();
linkedList.add("a");
linkedList.add("b");
linkedList.add("c");
linkedList.add("d");
linkedList.add("d");
linkedList.add("d");//向链表末尾添加元素
linkedList.add(2,"x");//向指定的位置添加元素
System.out.println(linkedList.get(3));//从链表中获取指定位置的元素(从头或者从尾开始查找,效率低于ArrayList)
//linkedList.clear();
linkedList.contains("a");
linkedList.remove("b");
linkedList.remove(2);
linkedList.remove();//删除并返回第一个节点内容
linkedList.removeLast(); //删除并返回最后一个元素
linkedList.isEmpty();
linkedList.size();
linkedList.set(1,"s");
System.out.println(linkedList);
Vector
/*
Vector
数组实现
是多线程安全的
*/
public static void main(String[] args) {
Vector<Integer> vector = new Vector<>();
vector.add(128);
vector.add(2);
vector.add(3);
vector.add(4);
(方法的调用和LinkedList,ArrayList基本一致)