java数据结构表的学习

本文深入探讨Java Collections API,包括Collection接口及其子接口的功能特性,如List接口与其实现类ArrayList和LinkedList的区别。同时介绍了如何利用Iterator接口遍历集合,以及在遍历过程中使用ListIterator接口进行元素操作的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、表ADTabstract data type

    1)数组

    2)链表

2、java Collections API中的表(位于java.util)

1Collection接口

Collection接口扩展了iterable接口,实现Iterable接口的那些类可以有增强的for循环,该循环施于这些类之上以观察他们的所有项。  

(表一)

例:(在Iterable类型上使用for循环)

 

public static <AnyType> void print(Collection<AnyType> coll){

for(AnyType item:coll)

System.out.println(item);

}

 

 

  2Iterator接口(位于java.util);Iterator的思路是,通过iterator方法,每个集合均可以创建并返回给客户一个实现的Iterator接口对象,并把当前位置的概念在对象内部存储下来。

(表二)

表一中的代码会被编译器重写为:

 

public static <AnyType> void print(Collection<AnyType> coll){

Iterator<AnyType> itr=coll.iterator();

while(itr.hasNext()){

AnyType item=itr.next();

System.out.println(item);

}

}

 

 

注意:【1】如果对正在被迭代的集合进行结构上的改变(add,removeclear方法),那么迭代器就不合法(并且其后使用迭代器是会抛出ConcurrentModificationException异常)。

     【2Collection有一个remove方法,使用Iteratorremove方法可能会有更多的优点。且迭代过程中可以使用iteratorremove方法。

3、List接口、ArrayList类和LinkedList

   1List接口,继承与Collection接口。ArrayList类提供了List ADT的一种可增长数组的实现,getset方法调用花费常数时间。LinkedList类提供了List ADT的双链表实现,addFirstremoveFirstaddLastremoveLast,以及getFirstgetLast的调用开销为常数时间。

2remove方法对LinkedList类的使用。

例:将一个表中所有具有偶数值得项删除;

这里要用到迭代器,不能用get方法,因为LinkedListget方法的时间复杂度是O(n)

表三

public static void removeEvensVer(List<Integer> lst){

Iterator<Integer> itr=lst.iterator();

 

while(itr.hasNext()){

if(itr.next()%2==0)

itr.remove();

}

}

 

     3) ListIterator接口,ListIterator扩展了ListIterator的功能。增加了一些方法。

表四

public interface ListIterator<AnyType> extends Iterator<AnyType>{

boolean hasPrevious();

AnyType previous();

 

void add(AnyType x);

void set(AnyType newVal);

}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值