Java程序员从笨鸟到菜鸟(七)数组和集合

1. 数组和集合的区别

  • 数组声明了容纳元素的类型,而集合不声明
  • 数组声明之后,长度不可改变,而集合可以根据需求动态改变长度
  • 数组是线性排列的,执行效率优于集合

2. 集合相关知识

2.1 集合体系中的三个主要接口:List、Set、Map;List和set实现了collection接口;

2.2 Set:不允许重复元素,HashSet和TreeSet是两个主要实现类,Set的取值只能通过游标

2.3 List:允许元素重复,ArrayList、LinkedList和Vector是其三个主要实现类;ArrayList是线程不安全的,Vector是线程安全(效率相对较低)的,这两个的底层都是由数组实现的;LinkedList是线程安全的,底层是由链表实现的。

数组和链表的优缺点:数组查询、修改快,插入和删除较难(要移动数据);链表插入删除容易,查询、修改慢(要移动指针)。

2.4 Map是键值对集合,key值唯一不重复,value值可以,HashMap、TreeMap、HashTable是三个主要实现类;HashTable是线程安全的,效率低,不能存null值,HashMap是线程不安全的,可以存null值

 

ArrayList list=new ArrayList(); 这种是默认创建大小为10的数组,每次扩容大小为1.5倍
ArrayList list=new ArrayList(20); 这种是指定数组大小的创建,创建时直接分配其大小,没有扩充。
所以,扩充为0次

 

ArrayList初始化的默认长度?ArrayList的长度是固定的吗?其实现的原理是什么?

如果直接打印al.size()当然是0,size()方法,因为10指的是“逻辑”长度。 所谓“逻辑”长度,是指内存已存在的“实际元素的长度” 而“空元素不被计算“;即:当你利用add()方法,向ArrayList内添加一个“元素”时, 逻辑长度就增加1位。 而剩下的9个空元素不被计算。

ArrayList<String> al = new ArrayList<String>();

版权声明:欢迎转载, 转载请保留原文链接。https://mp.csdn.net/postedit/79399936

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值