List
1 .ArrayList
它是jdk1.2的时候提出来的,它的底层是由数组来实现的。如果实例化此类对象时掺入了数组大小,则里面保存的数组就会开辟一个定长的数组,如果后面进行数据保存时发现数组不够了,此时就要对数组进行扩容。
ArrayList是异步处理,性能更高,但是非线程安全
以下是ArrayList类的以下常用方法:
public class ArrayList {
public static void main(String[] args) {
List<String> list=new java.util.ArrayList<>();
list.add("in the sunshine,");
list.add("there are");
list.add("some trees");
list.add("a river");
list.add("a wooden house");
System.out.println(list);
list.add("a river");//允许数据重复
System.out.println(list);
System.out.println(list.isEmpty());//判断list是否为空
System.out.println(list.size());//list的大小
System.out.println(list.remove("a wooden house"));
System.out.println(list);
System.out.println(list.contains("some trees"));//判断是否存在该元素
}
}
结果:
List本身一共有一个方法是get()方法,通过list的下标索引取得对应的值:
具体见下:
public class ArrayList {
public static void main(String[] args) {
List<String> list=new java.util.ArrayList<>();
list.add("in the sunshine");
list.add("there are");
list.add("some trees");
list.add("a river");
list.add("a wooden house");
System.out.println(list);
System.out.println(list.get(0));
}
}
输出:
2)LinkedList
LinkedList的底层实现是链表,增加删除元素比ArrayList速度快,但是查找元素速度比较慢
其基本操作和ArrayList类似:
public class LinkedList {
public static void main(String[] args) {
List<Integer> list=new java.util.LinkedList<>();
list.add(1);
list.add(6);
list.add(3);
list.add(8);
System.out.println(list);
System.out.println(list.get(0));
System.out.println(list.contains(8));
System.out.println(list.isEmpty());
}
}
结果:
3.Vector
Vector 和ArrayList的作用是一样的,但是现在基本上不用,因为在Vector里面,其读写等方法上面加有 synchronized,同步处理,性能较低,性能安全
下面这些方法就是加了synchronized
public synchronized E get(int index) {}
public synchronized E set(int index, E element) {}
public synchronized void removeElementAt(int index) {}
public synchronized void setElementAt(E obj, int index) {}
public synchronized E lastElement() {}
public synchronized E firstElement() {}
其具体操作和ArrayList差不多
public class VectorTest {
public static void main(String[] args) {
List<String> list=new Vector<>();
list.add("java");
list.add("python");
list.add("c++");
System.out.println(list);
System.out.println(list.isEmpty());//判断list是否为空
System.out.println(list.size());//list的大小
System.out.println(list.remove("java"));
System.out.println(list);
System.out.println(list.contains("c++"));//判断是否存在该元素
}
}
结果: