很多教程过于深入和浅出,以至于想深入的总觉得不够全面,想浅出的总觉得看起来费劲。
本人菜鸟,作知识的聚合和整理,以下简单介绍Collection的使用API以及必要的知识。
继承框架
![5c845e14c1e78556f107c058d056af32.png](https://i-blog.csdnimg.cn/blog_migrate/48e2f1c0759e7ed68bb033b13de6ecf3.jpeg)
Collection
|-----List 有序(存储顺序和取出顺序一致),可重复
|----ArrayList ,数组队列,线程不安全,底层使用数组实现,查询快,增删慢,效率高。
|----LinkedList , 双向链表,线程不安全,底层使用链表实现,查询慢,增删快,效率高。
|----Vector ,数组队列,线程安全,底层使用数组实现,查询快,增删慢,效率低。
|-----Set 不可重复
|----HashSet,HashMap的keys,线程不安全,不保证元素顺序,允许null值
|----TreeSet , TreeMap的keys,线程不安全,保证元素顺序,允许null值
iterator接口
Collection都支持一个iterator(),该方法返回一个迭代器,用于遍历Collection中元素
boolean hasNext()
//如果仍有元素可以迭代,则返回 true。
E next()
//返回游标的下一个元素,同时游标向后移动一位。
void remove()
//从迭代器指向的集合中移除迭代器返回的最后一个元素。
使用示例
Collection<String> c=。。。。
Iterator<String> i=c.iterator();
while(i.hasNext()){
String s=i.next();//s是使用next()返回的元素
i.remove();//remove方法会删除使用next()方法返回 的元素,也就是s
}
ListIterator接口
继承于Iterator,List类型对象有ListIterator()方法
void hasPrevious()
//判断游标前面是否有元素;
Object previous()
//返回游标前面的元素,同时游标前移一位。游标前没有元素就报 java.util.NoSuchElementException 的错,所以使用前最好判断一下;
int nextIndex()
//返回游标后边元素的索引位置,初始为 0 ;遍历 N 个元素结束时为 N;
int previousIndex()
//返回游标前面元素的位置,初始时为 -1,同时报 java.util.NoSuchElementException 错;
void add(E)
//在游标 前面 插入一个元素
void set(E)
//更新调用 next() 或者 previous() 返回 的元素。
注意,当没有迭代,也就是没有调用 next() 或者 previous() 直接调用 set 时会报 java.lang.IllegalStateException 错;
注意事项
- 增加了双向访问以及修改的功能
- set和add都是针对游标的前一位置
- hasPrevious与previous绑定使用