码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构基础--集合、表

时间:2018-04-08 00:20:35      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:java   插入   linked   决定   接口   数据   编译   rev   增强for循环   

集合(collection)的概念在Collection接口中得到抽象,接口位于java.util包中

Collection接口定义:
public interface Collection<AnyType> extends Iterable<AnyType>
{
int size();
boolean isEmpty();
void clear();
boolean contains(AnyType x);
boolean add(AnyType x);
boolean remove(AnyType x);
java.util.Iterator<AnyType> iterator();
}
扩展了Iterable接口可以使用for-each循环(增强for循环)
for(AnyType item:arry)
  System.out.print(item);
实现Iterable接口的集合必须提供一个iterator的方法,该方法返回一个Iterator类型的对象。Iterator在java.util包中
public interface Iterator<AnyType>{
boolean hasNext();//集合中是否存在下一项
AnyType next();//给出迭代器中当前项的下一项
void remove();//删除由next最新返回的项(必须要调用一次next)
}
所以可以改写for-each循环
Iterator<AnyType> itr=arry.iterator();
while(arry.hasNext()){
AnyType item=arry.next();
System.out.print(item);
}
直接使用Iterator时,如果正在被迭代的集合进行结构上的改变,那么迭代器就不再合法。但是迭代器调用自己的remove方法,那么迭代器却时合法的。
表:由java.util包中的List接口指定。List接口继承了Collection接口。
public interface List<AnyType> extends Collection<AnyType>{
AnyType get(int idx);
AnyType set(int ids,AnyType newVal);
void add(int ids,AnyType x);
void remove(int idx);
ListIterator<AnyType> listIterator(int pos);
}
List ADT提供了两种实现方式:ArrayList类提供了一种可增长数组的实现,LinkedList类提供了一种双链表实现
for-each循环在编译器中默认使用迭代器,所以使用for-each循环不能对被循环者进行结构改变
public interface ListIterator<AnyType> extends Iterator<AnyType>
{
boolean hasPrevious();//从后开始:集合中向前是否还有元素
AnyType previous();//从后开始:迭代器中的当前元素的前一项
void add(AnyType x);//从next和previous中决定插入的当前项;列入:>5 8 14 6 9(正常起点:next返回5,previous非法,add把项放在5之前) 5> 8 14 6 9() 5 8 14 6 9>;add把项放在next之前previous之后
void set(AnyType newVal);//改变迭代器看到的最后一个值
}

数据结构基础--集合、表

标签:java   插入   linked   决定   接口   数据   编译   rev   增强for循环   

原文地址:https://www.cnblogs.com/hzfITsudyhzf/p/8735350.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!