一 .java的ArrayList类和Vector类 以及集合遍历
Iterator是一个迭代器接口,专门用来迭代各种Collection集合,包括Set集合和List集合。
Iterator接口包含以下三个方法:
1.boolean hasNext():如果被迭代的集合元素还没有被遍历,则返回true。
2.Object next():返回集合里下一个元素
3.void remove():移除集合里上一次next()返回的元素
下面演示两种集合的遍历方式:
package LyfPractice;
import java.util.*;
/**
* Created by fangjiejie on 2016/12/19.
*/
public class JH {
public static void main(String[] args) {
ArrayList a = new ArrayList();
a.add("A");
a.add(100);
a.add("B");
/*********遍历方式*********/
//第一种
Iterator it = a.iterator();//把元素导入迭代器
while (it.hasNext()) {
Object o = it.next();
System.out.println(o);
}
System.out.println("*******************");
//第二种
ListIterator it1 = a.listIterator(); //ListIterator继承了 Iterator,多了一个previous功能,双向遍历
while (it1.hasNext()) {
Object o = it1.next();
System.out.println(o);
}
while (it1.hasPrevious()) {
Object o = it1.previous();
System.out.println(o);
}
System.out.println("*******************");
//第三种
for (Object o : a) {
System.out.println(o);
}
System.out.println("*******************");
//第四种
Object[] ArrayA = a.toArray();
for (int i = 0; i < ArrayA.length; i++) {
System.out.println(ArrayA[i]);
}
System.out.println("*******************");
//第五种
a.remove(1);
for (int i = 0; i < a.size(); i++) {
System.out.println(a.get(i));
}
System.out.println("*******************");
Vector b = new Vector();//线程同步的,安全的,速度慢,ArrayList的所有操作都好使
b.add("C");
b.add("D");
b.add("E");
//第六种Vector类专用,只有同步的集合才使用
Enumeration Enumb = b.elements();//Enumeration 接口提供了遍历 Vector 类型集合元素的功能
while (Enumb.hasMoreElements()) {
System.out.println(Enumb.nextElement());
}
/*****泛型*****/
Vector<Integer> c=new Vector();
c.add(1);
Iterator<Integer> cc=c.iterator();
}
}
/*
ArrayList:线程不安全,速度快
Vector: 线程安全的,速度慢
*/
二.LinkedList实现类
List还有一个LinkedList的实现,它是一个基于链表实现的List类,对于顺序访问集合中的元素进行了优化,特别是当插入、删除元素时速度非常快。因为LinkedList即实现了List接口,也实现了Deque接口(双向队列),Deque接口是Queue接口的子接口,它代表一个双向列表,Deque接口里定义了一些可以双向操作队列的方法:
这三种集合在使用时也应该注意区别: