Java技术深究之Android中集合的使用法则

Java中的集合大致可以分为3类,它们就是List(有序可重复),Set(无序不可重复),Map(键值对,键是Set集合)

首先List集合的特性就是有序可重复,有序性是指List集合的元素顺序跟你放入的顺序是一致的,而可重复就是它可以放入重复相同的元素。它有三个子类,分别是:

  1. ArrayList(底层数据结构是数组,查询访问速度快,但是添加删除速度差)
  2. LinkedList(底层数据结构是双向链表,查询访问速度慢,但是添加删除速度快)
  3. Vector(基本上和ArrayList类似,但是它是基于线程安全的)

ArrayList:

由于ArrayList底层数据结构是数组,学过数据结构的同学应该知道,数组在内存当中是连续的,因此它的查询访问速度是非常可观的,但是添加和删除那就比较差了,为什么呢?有两方面原因,一方面是由于数组在中间添加删除元素的时候,其它的成员元素都要进行移动,这就是一笔时间开销啊,当然,如果在头尾删除添加是没有影响的,第二方面就是我们知道数组在Java中是固定大小的,而ArrayList可以动态添加元素是为什么呢?原因就是ArrayList的扩容机制,实际上当元素达到当前的最大限度时,你往他里面再添加元素,ArrayList就会进行扩容,扩容实际上就是生成一个新的容量数组,容量比之前的大一些,等下一次再添加到最大限度,又会进行扩容(动态数组),扩容的时候又是一笔时间开销,因此ArrayList并不适合常常进行删减操作。

操作方法:
一般可以用For 循环进行操作

List<Integer> ls = new ArrayList<>();

//可以用for 循环获取下标
for (int i = 0; i < ls.size(); i++) { }
//通过迭代器循环
Iterator<Integer> iterator = ls.iterator();
while (iterator.hasNext()){
   Integer next = iterator.next();
   Log.d(TAG, next+"");
}

//可以用foreach 直接获取每个元素,本质上是实现一个迭代器,区别就是foreach 方式循环没有remove() 操作
for (Integer data : ls) {}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值