Collection集合对象

关系

  • Collection
    • List
      • LinkedList
      • ArrayList
      • Vector
    • Set
      • HashSet
      • LinkedHashSet
      • TreeSet
  • Map
    • HashTable
    • HashMap
    • LinkedHashMap
    • TreeMap
List类族

ArrayList、Vector和LinkedList都继承自AbstractList,AbstractList实现了List接口,并扩展自AbstractCollection.

ArrayList、Vector均采用数组实现,二者区别在于Vector做了线程同步,是线程安全的;
LinkedList使用了循环双向链表结构

列表遍历
for…each、Iterator、for循环
反编译后发现ForEach的实现就是使用的Iterator迭代,但又比Iterator多了一层赋值,所以速度ForEach略多与Iterator

String tmp;
for (String string : list) {
    tmp = string;
}
//编译后
ArrayList list = new ArrayList();
for(Iterator iterator = list.iterator(); iterator.hasNext();)
{
    String string = (String)iterator.next();
    String s = string;
}
//若ForEach循环内直接对循环内容操作,和iterator一样

对数组实现的ArrayList而言,随机访问速度较快,故使用For循环性能就好;
对链表实现的LinkedList来讲,实现随机访问最坏要遍历整个集合,故优先使用前两种。

Map类族

HashTable和HashMap都实现了Map接口,Hashtable子类中海油Properties类的实现。
HashTable对大部分方法做了同步,HashMap没有,因此HashMap是线程不安全的。
HashTable不允许key和value使用null值,HashMap可以。
LinkedHashMap继承自HashMap,在HashMap的基础上增加了一个链表来维护元素的次序表。
TreeSet实现了SortedMap接口,可以对元素进行排序,内部实现是基于红黑树,有着高效的基于key的排序算法。

Set类族

Set元素是不能重复的,Set的实现实际上是对相应的Map实现的封装,HashSet对应HashMap,HashSet内部维护了一个HashMap对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值