List接口的实现类常用的有ArrayList和LinkedList。
1、ArrayList类
该类实现了可变的数组,允许所有元素,包括null。可以根据索引位置对集合进行快速的随机访问。缺点是向指定的索引位置插入对象或删除对象的速度较慢。语法格式如下:
List<String> list = new ArrayList<String>();
2、LinkedList类
该类采用链表结构保存对象。这种结构的优点是便于向集合中插入和删除对象,经常需要向集合中插入、删除对象时,使用LinkedList类实现的List集合的效率较好;但对于随机访问集合中的对象,使用LinkedList类实现List集合的效率较慢。语法格式如下:
List<String> list2 = new LinkedList<String>();
使用List集合时通常声明为List类型,可通过不同的实现类来实例化集合。
例1、分别通过ArrayList、LinkedList类实例化List集合。
List list = new ArrayList();
List list2 = new LinkedList();
例2、在项目中创建Gather类,在主方法中创建集合对象,通过Math类的random()方法随机获取集合中的某个元素,然后移除数组中索引位置为2的元素,最后遍历数组。
package test;
import java.util.*;
public class Main{
public static void main(String []args){
List list = new ArrayList();
int i = (int)(Math.random()*(list.size()-1));//i = 0
list.add("a");
list.add("b");
list.add("c");
System.out.println("随机获取数组中的元素:"+list.get(i));
list.remove(2);
System.out.println("将索引是‘2’的元素从数组移除后,数组中的元素是:");
for(int j = 0;j < list.size();j++){
System.out.print(list.get(j)+" ");
}
}
}
3、List list = new ArrayList();
ArrayList list = new ArrayList();的区别?
List是一个接口,而ArrayList 是一个类。 ArrayList 继承并实现了List。
List list = new ArrayList();这句创建了一个ArrayList的对象后把上溯到了List。此时它是一个List对象了,有些ArrayList有但是List没有的属性和方法,它就不能再用了。而ArrayList list=new ArrayList();创建一对象则保留了ArrayList的所有属性。
为什么一般都使用 List list = new ArrayList() ,而不用 ArrayList alist = new ArrayList()呢?
问题就在于List有多个实现类,如 LinkedList或者Vector等等,现在你用的是ArrayList,也许哪一天你需要换成其它的实现类呢?,这时你只要改变这一行就行了:List list = new LinkedList(); 其它使用了list地方的代码根本不需要改动。假设你开始用 ArrayList alist = new ArrayList(), 这下你有的改了,特别是如果你使用了 ArrayList特有的方法和属性。 ,如果没有特别需求的话,最好使用List list = new LinkedList(); ,便于程序代码的重构. 这就是面向接口编程的好处。
4、List<Integer>list =new ArrayList<Integer>(); <Integer> 什么意思?
表示了List里面放的对象是什么类型的,这样写就表示了,你List里面放的必须是Integer类型的,别的就会报错,所以,你可以先Integer it = new Integer();list.add(it);这样就相当于再list里面放入了一个Integer对象,你要放别的就不行了,懂了?
5、List<integer> list = new ArrayList<>();
List<integer> list = new ArrayList<integer>>();的区别?
JDK1.7之后增加了类型推导的特征,构造方bai法里可以不给出具体类型,编译器会从变量的声明中推导出类型。也就是说1.7之后这两个写法都可以,第一个更简便一点。
6、ArrayList<Integer> list = new ArrayList<>();
ArrayList list = new ArrayList();
如果方法返回值里加了ArrayList<Integer>,那么这里的Integer可以不加。
7、