JAVA集合类浅谈:1.1Arraylist

JAVA集合类浅谈:

前言:
集合包是Java中最常用的包 集合包中常用的主要有Collection和Map两个接口的实现类Collection用于存放多个单对象Map用于存放Key-Value形式的键值对。 Collection中常用的又分为两种类型的接口List和Set两者最明显的差别为List支持放入重复的对象而Set不支持。List接口常用的实现类有ArrayList、LinkedList、Vector以及StackSet接口常用的实现类有HashSet、TreeSet

类图:
[img]http://dl.iteye.com/upload/attachment/522911/a1c0a8fb-7ac6-33de-9081-262238468763.jpg[/img]

对于collection中的具体实现类不想多讲,相信使用JAVA一段时间的人基本都了解,大家可以看看API基本就可以了。注意一下源码的实现,这样才可以选择自己适用和编写高性能的代码。
稍微记录一下Iterator模式。
iterator()是用于遍历集合类的标准访问方法。
它可以把访问逻辑从不同类型的集合类中抽象出来,从而避免向客户端暴露集合的内部结构。
它的具体实现是这样的。
定义一个接口类

public interface Iterator {
 boolean hasNext();
 Object next();
 void remove();
}


在AbstractList抽象类中定义了一个内部类:

private class Itr implements Iterator {
 int cursor = 0;
 int lastRet = -1;
 int expectedModCount = modCount;
}

iterator()方法的定义

public Iterator iterator() {
 return new Itr();
}



next()方法

public Object next() {
 checkForComodification();
 try {
  Object next = get(cursor);
  lastRet = cursor++;
  return next;
 } catch(IndexOutOfBoundsException e) {
  checkForComodification();
  throw new NoSuchElementException();
 }
}


使用:

Collection c = new ArrayList();
c.add("abc");
c.add("xyz");
for(Iterator it = c.iterator(); it.hasNext(); ) {
 String s = (String)it.next();
 System.out.println(s);
}

具体代码就不多解释了,额外说一下,list接口在iterator迭代的时候每次都会检查list对象是否发生改变(checkForComodification()),如果长度发生改变了,会抛出ConcurrentModificationException异常。


数组的两大缺点:

1。若改变数组的大小就要创建一个新的数组,并需要从原数组复制所有的数据到新的数组

2。数组元素在内存中依次顺序存储,这意味着向数组插入一项要移动数组中的其他元素
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值