数组,List,Array List,LinkedList的区别

Java

数组

连续内存,大小不可变
创建的时候需要指定长度

List

List是一个接口,而ArrayList是List接口的一个实现类。 ArrayList类继承并实现了List接口。

因此,List接口不能被构造,也就是我们说的不能创建实例对象,但是我们可以像下面那样为List接口创建一个指向自己的对象引用,而ArrayList实现类的实例对象就在这充当了这个指向List接口的对象引用。

List list; // 正确,list = null; 
List list = new List(); // 是错误的用法

// 这句创建了一个ArrayList实现类的对象后把它上溯到了List接口。
// 此时它就是一个List对象了,它有些ArrayList类具有的,但是List接口没有的属性和方法,它就不能再用了。
List list = new ArrayList(); 
 
// 创建一对象则保留了ArrayList的所有属性和方法。
ArrayList list=newArrayList();  
  • 参考
  • 和我在C++中学的类的继承类似

ArrayList

相当于是List类的继承 ,比如List <T> myList = new ArrayList<T>();
长度是动态的,不需要分配长度
类似C++里面的vector

ArrayList.remove() 方法注意事项

List<Integer> ls = new ArrayList<Integer>();
for (Integer i : ls){
        // 此方法会报错
        ArrayList.remove(i);
}
for (Integer i : ls){
        // 不能穿Integer,需要传int才行
        int a = i;
        ArrayList.remove(a);
}

LinkedList

是List类的继承,特点是拥有指向下一个node的指针

ArrayList和LinkedList的大致区别如下:

  1. ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
  2. 对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
  3. 对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
    参考

EmptyList

继承List类

Set 也是一个接口, 所以不能被实例化. 职能 Set <T> s = new HashSet<T>();

Arrays.asList();

首先,该方法是将数组转化为list。有以下几点需要注意:
(1)该方法不适用于基本数据类(byte,short,int,long,float,double,boolean)需要使用Integer 这种类型
(2)该方法将数组与列表链接起来,当更新其中之一时,另一个自动更新(不懂)
(3)不支持add和remove方法

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值