java接口与集合_集合接口 - SegmentFault 思否

一. 集合接口

Java集合类库将接口(interface)与实现(implementation)分离。

举个例子,队列接口的最小形式

interface Queue

{

void add(E element);

E remove();

int size();

}

但是队列实现的两种方式:一种是使用循环数组;另一种是使用链表。

二. Java类库中的集合接口和迭代器接口

集合类的基本接口是Collection接口,有两个基本方法

public inter Collection

{

boolean add(E element);

Interator iterator

}

add方法用于向集合中添加元素,添加元素确实改变集合,返回true,否则false;集中不允许有重复的对象。

iterator方法用于返回一个实现了Iterator接口的对象。依次访问集合中的元素

1. 迭代器

包含3个方法

public interface Iterator

{

E next(); //查找下一个

boolean hasNext(); //是否有下一个

void remove(); //删除

}

集合的末尾,next方法抛出NoSuchElementException,需要在调用next之前调用hasNext方法。

Collection c=...;

Iterator iter=c.iterator();

while(iter.hasNext())

{

String element=iter.next();

//do something

}

java SE5.0起可以使用 for each进行循环

for(String element :c)

{

// do something

}

可以与任意实现了Iterable接口的对象一起工作,Iterable接口

pulic interface Iterable

{

Iterator iterator();

}

标准类中的任何集合都可以使用 for each循环

元素被访问的顺序取决于集合类型。

备注:Iterator接口的next和hasNext方法与Enumeration接口的nextElement和hasMoreElements方法的作用一样,但是这个方法名太累赘,更喜欢短的方法名称。

java迭代器认为是位于两个元素之间,当调用next时,迭代器就越过下一个元素,并返回刚刚越过的那个元素的引用。

2. 删除元素

删除上次调用next方法时返回的元素。想要删除某个元素,仍然需要越过这个元素。如果调用remove之前没有调用next,将抛出一个IllegalStateException异常。所以每次删除之前,之前都要调用next方法

Iterator it = stack.iterator(); //删除

it.next();

it.remove();

it.next();

it.remove();

3.泛型实用方法

Collection与Iterator都是泛型接口,可以编写操作任何集合类型的实用方法。类库设计者:某些实用方法非常有用,应该提供给用户。

但是实现Collection接口的每一个类都要提供太多的例行方法,过于繁琐,java类库提供AbstractCollection,将基础方法size和iterator抽象化,提供了例行方法,使实际的数据结构实现者并没有需要实现所有例行方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值